JS算法--整數反轉

1. 需求介紹

給出一個 32 位的有符號整數,需要將這個整數中每位上的數字進行反轉。

注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231,  231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。


反轉什麼鬼😳 舉個栗子👇


輸入: 123
輸出: 321

輸入: -123
輸出: -321

輸入: 120
輸出: 21

2. 思路

把拿到的數字變爲數組,然後從最後一位依次push到新數組中,最後把新數組再變爲數字返回

  • 如果是有符號的,那麼將使用數組中的unshift方法(向數組來頭追加)
  • 如果得到新的數字大於32位,那麼需要返回0(math的中pow方法來求範圍)

3. 代碼實現

/*
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
    // Math.pow(2,3)  => 8
    let min = Math.pow(-2, 31),
        max = Math.pow(2, 31) - 1;        //最大最小值的範圍
    x = x.toString().split('');           //把x轉爲數組
    let y = [];                          //定義一個新數組來存儲反轉的值
    for (let i = x.length; i >= 0; i--) {    //從最後以爲開始遍歷
        if (i === 0 && (x[0] == '-' || x[0] == '+')) {
            //如果有加減符合,那麼追加到開頭,並且跳出循環
            y.unshift(x[0]); 
            break;
        }
        y.push(x[i]);
    }
    y = Number(y.join(''));     //把得到的新數組轉爲數字    
    return y > min && y < max ? y : 0;    //如果滿足32的範圍,那麼返回反轉後的值    
};

4. 測試

console.log(reverse(-123));   // -321
console.log(reverse(+123));  //  321
console.log(reverse(123456789));   // 987654321
console.log(reverse(12345678912));   // 0

5. 總結

通過上面一個簡簡單單的小例子,我們可以看出JavaScript中數組、字符串、Math等等這些方法都是需要熟記於心的,尤其在寫項目的時候使用這些方法是有助於我們快速開發的✊

👉需要學到更多內容就關注一下👈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章