给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
思路:
若x为0,则直接返回0.
设置一个表示x正负的变量positive。x为正时positive为true。设置结果数res=0.
将x取绝对值,不断对10取模,然后res = res * 10 + 模。
每次循环都要判断是否超出数值范围。
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
if (!x) return 0
let positive = x > 0 ? true : false
x = x > 0 ? x : -x;
let res = 0
while (x) {
res = res * 10 + x % 10;
if (positive) {
if (res > Math.pow(2, 31) - 1) return 0
} else {
if (res > Math.pow(2, 31)) return 0
}
x = parseInt(x / 10);
}
return positive ? res : -res
};