整數反轉
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
題解:
sign = x >= 0 # x正負
maxInt32 = (1 << 31) - 1 # 準備int32最大值
res = 0 # 準備結果,初始化為0
if x == - 1 << 31: return 0 # 若x為負int32最小值,則反轉后必定溢位,其余負數情況和正數是對稱的
x = abs(x) # 所以將x轉為正數來處理
while x != 0: # 只要還沒有pop完
pop = x % 10 # pop為x的最后一位
x //= 10 # x去掉最后一位
# 當result已經大于最大值//10,或者等于int32最大值//10并且當前pop出的值大于7時,必定溢位,回傳0
if res > maxInt32 // 10 or res == maxInt32 // 10 and pop > 7: return 0
# 如果不溢位,則把pop出的值加進result中
res = res * 10 + pop
# 最后回傳帶正負號的result
return res if sign else -res
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/230729.html
標籤:python
下一篇:周總2
