天天看點

【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的解法

大神解法請自己搜尋