1. 程式人生 > 實用技巧 >7-整數反轉

7-整數反轉

題目:

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

示例1:

輸入: 123
輸出: 321
示例 2:

輸入: -123
輸出: -321
示例 3:

輸入: 120
輸出: 21
注意:

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

解答:

  • 首先想到的是字串反轉,然後型別轉換,效率不行
  • 重點在於判斷是否溢位,採用較長的資料型別來儲存結果,下面採用的是long long
  • 注意最後判斷使用的方法:判斷強制型別轉換為int後是否與原資料相等,如果相等則沒有溢位
  • while迴圈的判斷條件:x!=0 因為x每次 /=10 最終肯定為0,這樣不用判斷資料是否為正負

注意:

  寫完程式碼後,需要找幾個特殊輸入進行測試,例如0 10 等情況,以減少程式碼bug。

int reverse(int x) 
{
        if (x<10 && x> -10)//只有一位的直接返回
        {
            return x;
        }

        long long result = 0;
        while (x != 0)
        {
            result = result*10 + (x % 10);
            x /= 10;
        }

        
return ((int)result ==result)? (int)result : 0; }