題目:給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−2^31, 2^31− 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
題解:1.符號位處理(將溢位範圍分為兩部分[-2^31,0)和(0,2^31-1])
2.字元反轉並處理首位『0』
3.溢位判斷並處理
網友的**(執行用時:80ms,記憶體消耗:13mb):
def reverse(x):
try:
#溢位判斷
if -2**31 <= x < 0:
x = str(x)[1:]
#去除第一位的『0』
x = x[::-1].lstrip('0')
if int(x) > 2**31:
#如果反轉後溢位,則返回0
return 0
else:
return int('-' + x)
elif x == 0:
return 0
elif x < 2**31:
x = str(x)[::-1].lstrip('0')
if int(x) >= 2**31:
return 0
else:
return int(x)
except:
#處理輸入值過大溢位的問題
return 0
class solution:
def reverse(self, x: int) -> int:
if x<0:
x=abs(x)
x = list(str(x))
result = "".join(x[::-1])
if int(result)<2**31:
return int('-'+result)
else:
return 0
elif x>0:
x = list(str(x))
result = "".join(x[::-1])
if int(result)<2**31-1:
return int(result)
else:
return 0
elif x==0:
return 0
leetcode反轉整數
題目 反轉整數 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 2 31,231 1 根據這個假設,如果反轉後的整數溢...
leetcode 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例 2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數...
LeetCode 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數溢位那麼就返回 0。題目並不難,重點在於處理溢位問題。int max 2147483647 int min...