天天看点

【LeetCode】整数反转(JavaScript)

题目:

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

示例 1:

输入: 123

输出: 321

示例 2:

输入: -123

输出: -321

示例 3:

输入: 120

输出: 21

首先拿到这道题的想法就是转为字符串或者数组,然后计算完后再转为数值。但想到了更简单的方法,即:

%求余数的值*10 + x/10的值,具体代码如下:

var reverse = function(x) {
    var rev = 0;
    while(x!=0){
        var pop = x%10;
        if(x>0) x = Math.floor(x/10);
        else if(x<0) x=Math.ceil(x/10);
        rev = rev*10 + pop;
        if(rev<Math.pow(-2,31) || rev>Math.pow(2,31)-1) return 0;
        
    }
    return rev;
};
           

有些细节需要注意:

1、对于正数来说,Math.floor向下取整,因此,0.6会等于0;Math.ceil向上取整,而对于负数来说,Math.ceil向上取整,因此,-0.6会等于-1。所以需要判断x与0的大小,再决定用向上或向下。

2、Math.pow是求方,不能使用-2^31。

本文为作者关于LeetCode的解法

大神解法请自己搜索