Skip to main content

整数反转

题目

给你一个 32 位的有符号整数 x, 返回将 x 中的数字部分反转后的结果. 如果反转后整数超过 32 位有符号整数的范围 [-2³¹, 2³¹ - 1], 就返回 0.

提示:
  • -2³¹ <= x <= 2³¹ - 1
示例
输入: 120

输出: 21
输入: -321

输出: -123

题解

类似于把数字看成, x % 10 就是取栈顶数字(peek), 作为个位数追加到数字 n 上; 而 x 则删除掉栈尾元素(pop). 这种方式叫做取模逆排法, 类似的题目还有 9. 回文数.

/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
const INT_MAX = 2 ** 31 - 1
const INT_MIN = (-2) ** 31
let n = 0

while (x) {
if (n > INT_MAX / 10 || n < INT_MIN / 10) return 0

n = n * 10 + (x % 10)
x = (x / 10) | 0
}

return n
}