1. 程式人生 > >【LeetCode 簡單題】3-用Python判斷迴文數

【LeetCode 簡單題】3-用Python判斷迴文數

宣告

第3題啦~~~感覺這道題和上一題(第2題)思路差不多,最後再加一句return rev_x == x即可

題目

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

eg1.輸入-輸出:121-True

eg2.輸入-輸出:-121-False 

eg3.輸入-輸出:10-False

進階: 你能不將整數轉為字串來解決這個問題嗎?

正文

解法1。字串的一鍵逆序輸出[::-1],和上一題(第2題)逆序輸出一樣

# V 1.0 能提交
class Solution:
    def isPalindrome(self, x):
        str_x = str(x)
        rev_x = str_x[::-1]
        return str_x == rev_x

解法2。 轉成字串,再用下標索引字串的字元,逐一對比

# V 2.0 能提交
class Solution:
    def isPalindrome(self, x):
        str_x = str(x)
        for i in range(len(str_x)):
            if str_x[i] != str_x[-i-1]:
                return False
        return True

解法3。list的函式reverse,一鍵完成逆轉

# V 3.0 能提交
class Solution:
    def isPalindrome(self, x):
        str_x = list(str(x))
        rev_x = list(str(x))
        rev_x.reverse()
        if str_x != rev_x:
            return False
        else:
            return True

 解法4。處理邏輯和上一題(第2題)求逆序數是一樣的,從輸入整數最後一位開始取,取完再判斷一下和原來的數是否相等

# 進階,不轉成字串:V 1.0 能提交
class Solution:
    def isPalindrome(self, x):
        count = 0
        num_x = abs(x)
        while num_x:
            count = count*10 + num_x%10
            num_x //= 10
        if x < 0:
            return False # 負數肯定不是迴文數,直接返回False
        return x == count