Leetcode9. 迴文數 Python實現

  • 題目要求:

image.png

  • 思路1(把str轉換爲list)數組

    • 先判斷數字是否小於0,小於0返回False
    • 判斷數字是否小於10,若是小於10,返回True,由於個位數是迴文數
    • 若是上述兩項都不符合,把字符串轉換爲list,用雙指針遍歷數組,一個指針指向list頭,一個指針指向list尾,相向遍歷,挨個比對,是否相同,相同則遍歷下一個,不一樣則返回False,注意這個遍歷的範圍從0到數組的一半便可
  • 思路2(不把str轉換爲list)spa

    • 先判斷數字是否小於0,小於0返回False
    • 判斷數字是否小於10,若是小於10,返回True,由於個位數是迴文數
    • 若是上述兩項都不符合,定義一個res,使其等於給定的x,再定義一個tmp,把res的每一位數逆序保存到tmp中,最後返回tmp==x
  • 核心代碼:
if x < 0:
    return False
if x < 10:
    return True
res = x
tmp = 0

# 當res不爲0時,說明res的每一位還沒都保存到tmp中,繼續循環
while res != 0:
    # 把上一次循環的到的tmp乘10,加上當前的res的個位
    tmp = tmp * 10 + res % 10
    # 去掉res的個位
    res //= 10
# 循環結束,返回tmp是否等於x
return tmp == x
  • 完整代碼:
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        if x < 10:
            return True
        res = x
        tmp = 0

        while res != 0:
            tmp = tmp * 10 + res % 10
            res //= 10
        
        return tmp == x
相關文章
相關標籤/搜索