LeetCode 7 整數翻轉

題目描述:

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

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

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

解題思路:當數字不爲結束符的時候循環。

首先取出一個數的餘數,然後將餘數作爲新數據的最高位,然後將原來的去掉餘數之後變成一個新的數。

注意數據的範圍和結果的類型轉換。

class Solution {
public:
    int reverse(int x) {
        long res = 0;
        while(x != 0){
            res =res *10 + x%10;
            x/=10;
            if(res > 2147483647 || res < -2147483648) return 0;
        }
        return (int)res;
    }
};

總結:數字翻轉類型,數字中的各個位置上數字的通用方法。即先對一個數字按10取餘數,然後對該數據按10取整數。

樣例代碼: res =res *10 + x%10;
                   x/=10;

 

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