【LeetCode】7. 反轉整數 結題報告 (C++)
阿新 • • 發佈:2018-12-26
題目描述:
給定一個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123 輸出: 321
示例 2:
輸入: -123 輸出: -321
示例 3:
輸入: 120 輸出: 21
注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
解題方法:class Solution { public: int reverse(int x) { long ans = 0; long a[100]; int i = 0; while(x != 0){ a[i] = x % 10; x /= 10; i ++; } for(int j = i - 1 , k = 1; j >= 0 ; j --){ ans += a[j] * k; if(ans > INT_MAX || ans < INT_MIN) return 0; k *= 10; } return ans; } };
沒什麼意思,用long型別就好,判斷有沒有溢位。
記住INT_MAX和INT_MIN就好。
INT_MIN在標準標頭檔案limits.h中定義。
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)
- 1
- 2
在C/C++語言中,不能夠直接使用-2147483648來代替最小負數,因為這不是一個數字,而是一個表示式。表示式的意思是對整數21473648取負,但是2147483648已經溢位了int的上限,所以定義為(-INT_MAX -1)。
C中int型別是32位的,範圍是-2147483648到2147483647 。