LeetCode第七題整數反轉

2021-09-10 09:58:32 字數 733 閱讀 5435

題目

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

示例示例 1:

示例 2:

示例 3:

輸入:123

-123

120輸出:

321-321

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

本人c語言**如下:

int reverse(int x) 

for( ; x!=0&&i<11; i++)

for(j=i-1; j>=i/2; j--)

for(j=0; j(0x1<<31)-1||reverse_x<((-0x1)<<31))

return reverse_x;

}

寫**是其實問題不大,只要解決負數和溢位情況即可。負數容易解決,重點區分溢位情況。

我是使用long型別來解決,要是還是使用int的話在最後反轉時還是會溢位。但是剛開始只是reverse_x使用了long,但是還是會出現溢位,後來檢查時發現問題出現在coef上。這個在求reverse_x的中間變數在位數過多時先溢位導致最後的結果錯誤。所以將其也定義為long型別解決問題。

題目提供的答案主要是使用棧的**先出特性來解決反轉問題,但是要解決溢位,使用了乙個判斷方法。答案鏈結如下:答案

LeetCode第七題 整數反轉

題目描述如下 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。輸入 123 輸出 321 輸入 123 輸出 321 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 int型別能表示數。請根據這個假設,如果反轉後整數溢位那麼就...

LeetCode 第七題 整數反轉

整數反轉 難度 簡單 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例 2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這...

LeetCode第七題 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123 輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數溢位...