題目:給一個32位有號整數,要求將整數反轉得到新整數,若原整數不在[-2^31, 2^31-1]範圍,則返回0。
Python理論上可以儲存無窮大的數,因此題目的32位即[-2^31, 2^31-1]只需Python作出範圍的判斷不用更換型別。
反轉的思路:
進行型別的轉換——將數轉換成字串型別,問題等價於反轉字串,按照序號排列順序,之後只要取序號即可得到一個個的數。
或,利用整數的性質,對整數進行取模及整除的操作。
或,棧?
class Solution:
def reverse(self, x: int) -> int:
strX = str(x)
length = len(strX)
result = ""
if "-" in strX:
for i in range(length - 1):
result = result + strX[length - i - 1]
result = "-" + result
else:
for i in range(length):
result = result + strX[length - i - 1]
if int(result) < -2**31 or int(result) > 2**31 -1:
return 0
return int(result)