LeetCode第七題 整數反轉

2021-09-23 14:31:57 字數 1166 閱讀 8918

題目描述如下:

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

輸出: 321

輸入: -123

輸出: -321

輸入: 120

輸出: 21

**注意:

假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 int型別能表示數。請根據這個假設,如果反轉後整數溢位那麼就返回 0。**

我只能說,我因為沒有注意這個「注意」的內容被折磨了很長時間。int型別能表示的數的範圍為:-2^31到2 ^31減一。以後寫**一定要多加小心了!!!!!

該題目我是通過將數字轉換成乙個字串進行處理的。採用雙指針對字串遍歷,左指標從左開始,右指標從右開始,並且下面四種情況左右指標的取值也不一樣。

而且不能在字串內部進行翻轉,因為string型別底層使用final定義了乙個char型別的陣列。所以要自己定義乙個char型別陣列存放轉換後的數字,將左指標的位置元素從char陣列的末尾往前放同時左指標++,將右指標的位置元素從char陣列的開頭放同時右指標–;

由於開頭的負號和結尾的數字0會影響我們數字翻轉所以我們分四種情況討論:

(1)首字元是負號且末尾有0

(2)首字元是負號且末尾沒有0

(3)首字元不是負號且末尾有0

(4)首字元不是負號且末尾沒有0

最後使用long型別儲存轉換後的數字,進行是否溢位判斷

**如下:

class solution else

}return index;

}public int reverse(int x) else if(s_num.charat(0) == '-' && index == 0)else if(s_num.charat(0) != '-' && index != 0)else

while(leftindex <= rightindex)

string s_result = string.valueof(c);

long l = long.parselong(s_result);

if(l >= (-(1l<<31)) && l <= ((1l<<31)-1))else

}}

LeetCode第七題整數反轉

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

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