LeetCode 7.整数反转

187 阅读1分钟

这里暂时总结了两种方法(名字靠想象:-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…