32
位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。32
位的有符号整数的范围 [?2^31, 2^31 ? 1]
,就返回 0
。64
位整数(有符号或无符号)。输入:x = 123
输出:321
输入:x = -123
输出:-321
输入:x = 120
输出:21
输入:x = 0
输出:0
-231 <= x <= 231 - 1
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
const flag = x > 0 ? 1 : -1;
x = flag > 0 ? x : -x;
const res = Number((x + "").split("").reverse().join().replace(/,/g, ""));
const border = Math.pow(2, 31);
if (res > border || res < -border - 1) {
return 0;
}
return res * flag;
};
result * 10 + x % 10
取出末位 x % 10
(负数结果还是负数,无需关心正负),拼接到 result
中。
x / 10
去除末位,| 0
强制转换为 32
位有符号整数。
通过 | 0
取整,无论正负,只移除小数点部分(正数向下取整,负数向上取整)。
result | 0
超过 32
位的整数转换结果不等于自身,可用作溢出判断。
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
let result = 0;
while (x !== 0) {
result = result * 10 + (x % 10);
x = (x / 10) | 0;
}
return (result | 0) === result ? result : 0;
};
原文:https://www.cnblogs.com/frank-link/p/14608822.html