【LeetCode 简单题】3-用Python判断回文数

本文介绍了一种判断整数是否为回文数的方法,并提供了四种不同的实现方式,包括使用字符串逆序、逐个字符对比、利用列表逆序以及纯数学方法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明

第3题啦~~~感觉这道题和上一题(第2题)思路差不多,最后再加一句return rev_x == x即可

题目

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

eg1.输入-输出:121-True

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

eg3.输入-输出:10-False

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

正文

大杀器解法。通过数学运算,每次取出x的最高位和最低位,比对完去掉最高位和最低位

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        base = 1
        while x // base:
            base *= 10
        base //= 10
        while x:
            left = x//base
            right = x%10
            if left != right:
                return False
            x = (x%base)//10
            base //= 100
        return True

解法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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值