Ограничения:

  • -2^31 <= x <= 2^31 - 1

Решение

/**
 * @param {number} x
 * @return {number}
 */
//Metehan Homriş
var reverse = function reverseInteger(x) {
    let reversed = 0;
    let sign = Math.sign(x); // get the sign of x
    x = Math.abs(x); // get the absolute value of x
    while (x > 0) {
        let digit = x % 10; // get the last digit of x
        reversed = reversed * 10 + digit; // add the digit to the reversed integer
        x = Math.floor(x / 10); // remove the last digit from x
    }
    reversed = reversed * sign; // apply the sign to the reversed integer
    if (reversed < -Math.pow(2, 31) || reversed > Math.pow(2, 31) - 1) { // check if the reversed integer is within the range of a signed 32-bit integer
        return 0;
    }
    return reversed;
}

В этом коде мы сначала получаем знак x с помощью функции Math.sign(). Затем мы получаем абсолютное значение x, используя функцию Math.abs(). Это позволяет нам поменять местами цифры x без учета его знака.

Затем мы используем цикл while для перебора цифр x. На каждой итерации мы получаем последнюю цифру x с помощью оператора модуля (x % 10) и добавляем ее к обращенному целому, умножая обращенное целое на 10 и добавляя цифру. Затем мы удаляем последнюю цифру из x, разделив x на 10 и используя функцию Math.floor() для округления в меньшую сторону.

После цикла while мы умножаем обратное целое число на знак x, чтобы восстановить исходный знак. Затем мы проверяем, находится ли перевернутое целое в пределах диапазона 32-битного целого числа со знаком, используя функцию Math.pow(), которая возвращает 2, возведенное в степень 31. Если перевернутое целое выходит за пределы этого диапазона, мы возвращаем 0. Если оно находится в пределах диапазона, мы возвращаем обратное целое число.

Давайте проверим нашу функцию на нескольких примерах:

//Metehan Homriş
console.log(reverseInteger(123)); // will return 321
console.log(reverseInteger(-123)); // will return -321
console.log(reverseInteger(120)); // will return 21
console.log(reverseInteger(1534236469)); // will return 0 (because it is outside of the range of a signed 32-bit integer)As we can see, our function correctly returns the reversed integer for positive and negative integers within the range, and returns 0 when the reversed integer would go outside the range.

В заключение, код использует математические операции и манипуляции со строками, чтобы поменять местами цифры 32-битного целого числа со знаком. Он проверяет, находится ли инвертированное целое в пределах диапазона 32-битного целого числа со знаком, и возвращает 0, если это не так.

Автор Метехан Хомриш

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.