leetcode:迴文數的判斷

在這裏插入圖片描述
迴文數>>上海自來水來自海上
解題思路:
將輸入的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所能表示的數是有範圍的

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章