LeetCode 7 整數反轉

2021-10-02 06:20:16 字數 1267 閱讀 4321

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231,  231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

方法:彈出和推入數字 & 溢位前進行檢查

思路我們可以一次構建反轉整數的一位數字。在這樣做的時候,我們可以預先檢查向原整數附加另一位數字是否會導致溢位。

演算法反轉整數的方法可以與反轉字串進行模擬。

我們想重複「彈出」 xx 的最後一位數字,並將它「推入」到 \textrev 的後面。最後,\textrev 將與 xx 相反。

要在沒有輔助堆疊 / 陣列的幫助下 「彈出」 和 「推入」 數字,我們可以使用數學方法。

//pop operation:

pop = x % 10;

x /= 10;

//push operation:

temp = rev * 10 + pop;

rev = temp;

但是,這種方法很危險,因為當 \text = \text \cdot 10 + \texttemp=rev⋅10+pop 時會導致溢位。

幸運的是,事先檢查這個語句是否會導致溢位很容易。

為了便於解釋,我們假設 \textrev 是正數。

如果 temp = \text \cdot 10 + \texttemp=rev⋅10+pop 導致溢位,那麼一定有 \text \geq \fracrev≥ 

10intmax

​    

。如果 \text > \fracrev> 

10intmax

​    

,那麼 temp = \text \cdot 10 + \texttemp=rev⋅10+pop 一定會溢位。

如果 \text == \fracrev== 

10intmax

​    

,那麼只要 \text > 7pop>7,temp = \text \cdot 10 + \texttemp=rev⋅10+pop 就會溢位。

當 \textrev 為負時可以應用類似的邏輯。

class solution 

return rev;

}};

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