7-整數反轉
阿新 • • 發佈:2020-10-12
題目:
給出一個 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; }