1. 程式人生 > >Leetcode 反轉整數

Leetcode 反轉整數

題目描述:

給定一個 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;
    }
};