迴文數>>上海自來水來自海上
解題思路:
將輸入的x轉換爲字符串,進而轉換爲列表,將列表倒置,判斷是否與原列表相等。
Python:
class Solution:
def isPalindrome(x: int) -> bool:
return list(str(x))[::-1]==list(str(x))
大佬代碼:
數學方式解決:
題目也提到了不用字符串的方法:
def func(x):
n=0
i=0
if x<0 or (x%10==0 and x!=0):
return False
while(x>n):
n*=10
n+=x%10
x=int(x/10)
i+=1
print(f'第{i}次循環\n當前:\n n:{n}\n x:{x}')
print('')
return n==x or int(n/10)==x
- 從x=123321的最低位開始遍歷,依次將數賦值給臨時變量n,x>n爲循環條件,顯然是n大於等於x時停止,證明x已經被拆分一半了,沒必要繼續下去了。
- 若爲奇數,則一定是n比x大,則必然n比x多一位,那麼用n/10將多的那一位去掉(去掉的這一位就是x中間的數),再判斷n與x
- 若爲負數,則必然不是
- 若爲個位數,則必然是
- 注意再判斷個位數時候,要判斷x是否爲0
- 注:整體反轉會出現溢出,因爲int所能表示的數是有範圍的