Leetcode 整數反轉 Python3實現

2021-09-24 22:23:02 字數 1333 閱讀 6459

題目:給出乙個 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...