題目描述如下:
給出乙個 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 請根據這個假設,如果反轉後整數溢位...