整數取出每位數字_LeetCode 7. 整數反轉
阿新 • • 發佈:2021-02-19
技術標籤:整數取出每位數字
2021.1.2
7. 整數反轉
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例
輸入: 123 輸出: 321 輸入: -123 輸出: -321 輸入: 120 輸出: 21
一開始的思路是用除留餘數的方法,從後到前獲取x每一位上的值,然後構建新的數字res
程式碼如下:
var reverse = function(x) { let res = 0; let flag = false //x是否為負數標記 if(x<0) { x=-x flag = true }//先置為正,最後加符號 while(x != 0) { //對x的每一位數從後到前遍歷,倒置 res = res*10 + x%10 x = parseInt(x/10) } if(flag) res=res*(-1) if(res<=Math.pow(-2,31)||res>Math.pow(2,31)-1) return 0 //判斷倒置後的數字是否超出32位 return res };
這裡第一次錯誤的原因是沒有注意到數字位數限制,加上判斷即可
注意:
假設我們的環境只能儲存得下 32 位的有符號整數,則數值範圍為 [−2^31, 2^31 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
大神們較快的方法主要是將x轉為string處理
程式碼如下:
var reverse = function(x) { const str = String(Math.abs(x)).split("").reverse().join("") const res = x > 0 ? Number(str) : Number(str)*(-1) if(res<=Math.pow(-2,31)||res>Math.pow(2,31)-1) return 0 return res };