LeetCode 7:整数反转 - 栈

98 阅读1分钟

给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

这个题最开始是想将x转换数组去算,但是由于步骤过于繁琐,就放弃了

后来直接用数学方法乘除和取余就成功了,但是却没有判断到溢出,害真是难顶。

var reverse = function(x) {
    if(x==0){return x;}//特判
    var n;
    var key = true;
    if(x<0){
        x=-x;
        key = false;
    }
    var k=0;
    while(x){
        k = k*10 + x%10;
        x = Math.floor(x/10)
        n++;
    }
    if(key==false){
          k=-k;
      }
      //Math.pow(2,31)是指2的31次方
    if(k<Math.pow(-2,31)||k>=Math.pow(2,31)-1){
        return 0
      }else{
          return k;
      }  
};

在过程中学到一些很有意思的方法

Array对象

pop() : 删除数组的最后一个元素并返回删除的元素

push():向数组的末尾添加一个或更多元素,并返回新的长度。

reverse(): 反转数组的元素顺序。

shift() : 删除并返回数组的第一个元素。

unshift():向数组的开头添加一个或多个元素,并返回新的长度。

sort():对数组的元素进行排序。

splice():从数组中添加或删除元素。

valueOf():返回数组的原始值。

toString():把数组转换为字符串,并返回结果。

String对象

split():把字符串分割为字符串数组。

toString():返回一个字符串。

Math对象

floor(x):对 x 进行下舍入。 floor(8.9)= 8

ceil(x):对 x 进行上舍入。ceil(8.9)= 9