題目描述:
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:假設我們的環境只能儲存得下 32 位的有符號整數,請根據這個假設,如果反轉後整數溢位那麼就返回 0。
如何判斷溢位是關鍵
這個溢位這麼難判斷的原因就是使用int 去存反轉後的結果,如果溢位就會把溢位部分的資料位丟掉,導致結果不正確。那我們用乙個更長的資料型別(long)去存反轉後的結果不就行了,這樣肯定不會存在有丟掉資料位的情況。最後直接把反轉後的結果與 int 型別的上下限比較即可判斷是否溢位。
利用數學思想推到演算法:
給乙個數123如何得到他的反轉321,可以對123%10 = 3,123/10 = 2; 123/100=1; 因為可以3*100+2*10+1得到321
#include #define int_max 2147483647
#define int_min (-int_max - 1)
using namespace std;
class solution
return (rev > int_max || rev < int_min) ? 0 : static_cast(rev);
}};int main()
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 根據這個假設,如果反轉後的整數溢位,則返...