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)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM