LeetCode 9. 迴文數(Python)

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

示例 1:

輸入: 121
輸出: true
示例 2:

輸入: -121
輸出: false
解釋: 從左向右讀, 爲 -121 。 從右向左讀, 爲 121- 。因此它不是一個迴文數。
示例 3:

輸入: 10
輸出: false
解釋: 從右向左讀, 爲 01 。因此它不是一個迴文數。

不將數字轉換成字符串來解決。

 

思路:可以將數字分成前後兩部分,後半部分直接取反轉後的數字,將原始數字除以 10,然後給反轉後的數字乘上 10,所以,當原始數字小於反轉後的數字時則意味着已經分成兩部分了。

判斷的時候需要排除一些特殊情況

①末尾爲0的數字,在末尾爲0的數字中,0是迴文數

②當數字個數爲12321時,可能分出來的兩部分爲123和12,這是需要將3去掉後再判斷

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x < 0 or (x % 10 == 0 and x != 0):
            return False
        
        endpart = 0
        while x > endpart:
            endpart = endpart * 10 + x % 10
            x = x / 10
        
        return x == endpart or x == endpart / 10

 

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