Ограничения:
-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 .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.