LeetCode刷題:第七題 整數翻轉 第九題 回文數
阿新 • • 發佈:2019-03-09
num 值範圍 我們 family lee max 存儲 示例 bool
第七題題目描述:
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
註意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麽就返回 0。
代碼如下:
1 int reverse(int x) {
2 int temp = x, num = 0;
3 while (x) {
4 if (num > INT32_MAX / 10 || (num == INT32_MAX / 10 && (x % 10) > 7)) {
5 return 0;
6 }
7 if (num < INT32_MIN / 10 || (num == INT32_MIN / 10 && (x % 10) < -8)) {
8 return 0;
9 }
10 num = num * 10 + x % 10 ;
11 x /= 10;
12 }
13 return num;
14 }
第九題題目描述:
判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數。
示例 3:
輸入: 10 輸出: false 解釋: 從右向左讀, 為 01 。因此它不是一個回文數。
代碼如下:
1 bool isPalindrome(int x) {
2 int temp = x, num = 0;
3 while (x) {
4 if (x < 0) {
5 return false;
6 }
7 if (num > INT32_MAX / 10 || (num == INT32_MAX / 10 && x % 10 > 7)) {
8 return false;
9 }
10 if (num < INT32_MIN / 10 || (num == INT32_MIN / 10 && x % 10 < -8)) {
11 return false;
12 }
13 num = num * 10 + x % 10;
14 x /= 10;
15 }
16 return temp == num;
17 }
這兩道題都是整數翻轉相關,主要代碼就兩行:
1 num = num * 10 + x % 10;
2 x /= 10;
LeetCode刷題:第七題 整數翻轉 第九題 回文數