_david李dvd

导航

Python版[leetcode]9. 回文数(难度简单)

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

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

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:

你能不将整数转为字符串来解决这个问题吗?

这道题不用进阶解法的确是非常容易解答的,直接转成字符串,然后反转一下判断即可

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x <0:
            return False
        x = str(x)
        return True if x == x[::-1] else False

进阶解法:

def isPalindrome(self, x: int) -> bool:
        """
        只反转后面一半的数字!!(节省一半的时间)
        """
        if x < 0 or (x!=0 and x%10==0):
            return False
        elif x == 0:
            return True
        else:
            reverse_x = 0
            while x > reverse_x:
                remainder = x % 10
                reverse_x = reverse_x * 10 + remainder
                x = x // 10
            # 当x为奇数时, 只要满足 reverse_x//10 == x 即可
            if reverse_x == x or reverse_x//10 == x:
                return True
            else:
                return False

 

posted on 2020-02-02 01:19  _david李dvd  阅读(263)  评论(0编辑  收藏  举报