这里暂时总结了两种方法(名字靠想象:-x)
移位大法
可以理解为用两个栈来处理,不过是用
x/10;出栈
r*10 + t;入栈
另外还需对x%10做取整处理
实现代码如下
var reverse = function(x){
let t, r = 0;
while(x >= 1 || x <= -1){
t = parseInt(x % 10);//取得当前需放入新数尾部的数字
x /= 10;
r = r*10 + t;
}
if(r < -Math.pow(2, 31) || r > Math.pow(2, 31)-1){
return 0;
}
return r;
}
双栈
var reverse = function(x){
let result = [];
let temp = x.toString(), limit = 0;
//如果是负数则将符号为压入,且修改循环范围
if(temp[0] === '-'){
result.push(temp[0]);
limit = 1;
}
//从尾到头遍历压入
for(let i=temp.length-1; i >= limit; i--){
result.push(temp[i]);
}
let r = parseInt(result.join(''));
if(r < -Math.pow(2, 31) || r > Math.pow(2, 31)-1){
return 0;
}
return r;
}
使用reverse()这里就不再赘述,和双栈类似
总结有错还请指出,谢谢
参考链接: juejin.cn/post/684490…