给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
我的算法实现:
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
let y = Math.abs(x)
let reverseDigit = y % 10;
for (let i = Math.floor(y / 10); i !== 0; i = Math.floor(i / 10)) {
reverseDigit = (reverseDigit * 10) + i % 10;
}
reverseDigit = (x > 0 ? 1 : -1) * reverseDigit
return (reverseDigit | 0) === reverseDigit ? reverseDigit : 0
};
最后不是我想到的,我自己测试了一下发现即便超过了也能正常,所以也就不知道怎么应对了,但是这个作者的方法很独到,跟0进行与运算,不管原来那个数是啥,得到的都是32位的数。而如果是超过32位的,那么就会被截掉一部分,自然此时就不相等了。
来源:力扣(LeetCode)