Leetcode 反轉整數
阿新 • • 發佈:2018-12-22
題目描述:
給定一個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123 輸出: 321
示例 2:
輸入: -123 輸出: -321
示例 3:
輸入: 120 輸出: 21
注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
思路:
不斷模10取得最低位,再不斷乘10相加得到最終的反轉結果
C++程式碼:
class Solution { public: int reverse(int x) // 123 { const int int_max=0x7fffffff; const int int_min=0x80000000; long long anwser=0; // 8個位元組,反轉後數值將超過32位,而int 只能儲存32位 while(x!=0) { anwser=anwser*10+(x%10); // x%10:取x得個位數: (0+3)->(30+2)->(320+1) x/=10; // 使得x的十位數變成個位數,這樣就可以依次由個位數往前面處理 } if(anwser<int_min || anwser>int_max) // 判斷是否越界 { anwser=0; } return anwser; } };