7.整數反轉
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-integer
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解題思路1:
1.先記錄正負號。
2.然後用數學方法不斷求x的每一位。
3.得到反轉結果,進行溢出判斷。
程序代碼1:
class Solution:
def reverse(self, x: int) -> int:
if x != 0:
symbol = int(abs(x)/x)
x = abs(x)
a = 0
while x >0:
a = a * 10 + x % 10
x = x // 10
if -2**31 <= a*symbol and a*symbol <= 2**31-1:
return a*symbol
else:
return 0
else:
return 0
s = Solution()
print(s.reverse())
解題思路2:
1.先判斷x是不是負數,是負數的話,取絕對值或者切片變爲正數,然後直接切片反轉。
2.判斷反轉後的數字是否溢出。
3.注意int型與str型的轉換
程序代碼2:
class Solution:
def reverse(self, x: int) -> int:
str_int = str(x)
if x < 0:
str_int = str_int[1:]
str_int = str_int[::-1]
if x < 0:
str_int = "-"+str_int
ret = int(str_int)
if ret < -1*2**31 or ret > 2**31 -1:
return 0
else:
return ret
s = Solution()
print(s.reverse())