給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
1.注意數值溢位判斷的提前操作,**中注釋的部分判斷錯誤(res * 10 + x % 10可能已經溢位,用溢位後的值判斷發生錯誤);
類似的還有leetcode第8題leetcode8 字串轉換整數 (atoi)
2.原資料已經限定了int範圍,所以此處可借助long型別來做校驗,避免上下界判斷。
解法一, 在*10前校驗是否溢位
class solution
*/if (res > int_max / 10
|| ((res == int_max / 10) && (x % 10 > int_max % 10)))
if (res < int_min / 10
|| ((res == int_min/ 10) && (x % 10 < int_min % 10)))
res = res * 10 + x % 10;
x = x / 10;
}return res;
}};
解法二,借助long型別來輔助判斷
class solution
// 使用long型別輔助判斷後就不需要下面的校驗了
// if (res < -1 * pow(2, 31) / 10 || res > (pow(2, 31) - 1) / 10)
res = res * 10 + x;
if (res < int_min || res > int_max)
return res;
}};
LeetCode7反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。以字串方式思考...
LeetCode 7 反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。很簡單,就是不...
leetcode 7反轉整數
隨機一題 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返...