Leetcode 7 整數反轉

2021-09-26 03:14:06 字數 787 閱讀 1183

題目描述:

給出乙個 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 根據這個假設,如果反轉後的整數溢位,則返...