Number
==无论什么语言整数操作都需要考虑溢出==
//simple version
var reverse = function (x) {
let ret = 0
while (x) {
//x % 10无需管正负
ret = ret * 10 + (x % 10)
if (ret > Math.pow(2, 31) - 1 || ret < Math.pow(-2, 31)) return 0
//强转32位有符号整数,正数向下取整,负数向上取整
x = (x / 10) | 0
}
return ret
}
//advanced version
var reverse = function (x) {
let ret = 0
while (x !== 0) {
//x % 10无需管正负
ret = ret * 10 + (x % 10)
//强转32位有符号整数,正数向下取整,负数向上取整
x = (x / 10) | 0
}
//超过32位的整数转换结果不等于自身,用作溢出判断
return (ret | 0) === ret ? ret : 0
}Last updated