LeetCode 7. 反轉整數(簡單模擬)
阿新 • • 發佈:2018-12-26
給定一個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123 輸出: 321
示例 2:
輸入: -123 輸出: -321
示例 3:
輸入: 120 輸出: 21
注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
分析:注意事項就是為什麼反轉之後的整數會溢位?2^31是2147483648有10位,如果輸入整數1111111119,也是十位明顯小於2^31,但是他反轉後首位肯定大於2了。然後還有一個注意的是x是-2^31時要特判一下。
程式碼如下:
class Solution { public: int reverse(int x) { int cu[40];int k = 0; bool flag = true; if(x==0)return 0; long long a = (long long)1<<31; if(x<0){ if(x==1*a)return 0; x = -1*x; flag = false; } while(x>0){ cu[k++] = x%10; x/=10; } long long ans = 0; for(int i=0;i<k;i++){ ans = ans*10+cu[i]; } if(ans>=a)return 0; else { if(!flag)ans = -1*ans; return ans; } } };
給定一個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123 輸出: 321
示例 2:
輸入: -123 輸出: -321
示例 3:
輸入: 120 輸出: 21
注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。