【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

 

猜你喜欢

转载自blog.csdn.net/weixin_41011942/article/details/81173926