JavaScript:整数反转

题目:

  给你一个 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


提示:
-231 <= x <= 231 - 1

  

  方法一:

var reverse = function(x) {
    var str= x.toString();  //转成字符串
    var arrStr = str.split('');  //分割成数组
    if(arrStr[0] !== '-'){
       let num=Number(arrStr.reverse().join(''))  // 翻转数组-》转成字符串-》转成数字
        if(num <= 2147483647 && num >= -2147483648){
             return num    
        }else{
            return 0
        }
    }else if(arrStr[0] === '-'){
        delete arrStr[0];  //删除第一位负号
        let num =  Number( arrStr.reverse().join(''));  //翻转数组-》转成字符串-》转成数字
        if(num <= 2147483647 && num >= -2147483648){
             return -num    //增加负号
        }else{
            return 0
        }
    }
};

  方法二:

var reverse = function(x) {
    var str= x.toString();
    var arrStr = str.split('');
    if(arrStr[0] !== '-'){
       let num=Number(arrStr.reverse().join(''))
        if(num <= 2147483647 && num >= -2147483648){
             return num    
        }else{
            return 0
        }
    }else if(arrStr[0] === '-'){
        delete arrStr[0];
        let num =  Number( arrStr.reverse().join(''))
        if(num <= 2147483647 && num >= -2147483648){
             return ~num+1  //  '~'对数字取反,取反后需要加1  
        }else{
            return 0
        }
    }
};

  

作者:wang-yi-dong
链接:https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-wang-yi-dong-rcyi/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

posted @ 2021-05-18 22:16  进击的乌龟  阅读(1016)  评论(0编辑  收藏  举报