参与活动得徽章 juejin.cn/topic/68247…
给你一个 32 位的有符号整数
x, 返回将x中的数字部分反转后的结果。 如果反转后整数超过32位的有符号整数的范围 ,就返回 0。
先来个低配版的
function reverse(x) {
const max = 2 ** 31 - 1;
const min = -(2 ** 31);
if(x > max || x < min) return 0;
const flag = x < 0 ? -1 : 1;
const r = (x * flag).toString().split('').reverse().join('') * flag;
if(r > max) return 0;
if(r < min) return 0;
console.log(r)
return r;
}
再来个升级版本
function reverse(x) {
const max = 2 ** 31 - 1;
const min = -(2 ** 31);
if(x > max || x < min) return 0;
let r = 0;
while(x !== 0) {
r = r * 10 + x % 10;
x = (x/10) | 0
}
if(r > max || r < min) return 0;
return r;
}
x % 10 取最后一位
r * 10 给 r 往前移一位
x = (x/10) | 0 去掉 x 的最后一位取整