【Leetcode-python】9.Palindrome Number(是否为回文整数)

本文探讨了如何判断一个整数是否为回文,即正读反读都相同的特性。提出了不转换为字符串的判断方法,通过递归计算获取整数的逆序值并与原值比较,高效解决回文判断问题。

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

题目:判断一个整数是否回文。当从左往右读和从右往左读值相等,就是回文整数。
例:  Input: 121   Output: true;
         Input: -121  Output: false; # -121和121-不同
         Input: 10     Output: false 。

思路:最简单的方法是把整数转化为字符串str,通过str==str[::-1]来进行判断是否左右对称。但是题目下面提示是否有其他的办法来实现。如果不将整数转化字符串,很容易看出,如果整数为负数一定不是回文的。关键就是怎么通过其他方法获得非负整数的反向值。下面递归的方法非常巧妙。思想就是通过%10找到整数的最低位,并让最低位*10,再将整数/10取整再%10找到次低位,最低位*10*10,次低位*10,依次类推下去,直到找到最高位数字。

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
           return false
        else: 
           return self.reverseNumber(x) == x
   
    def reverseNumber(self, num, runningSum=0):
        if num <= 9:
            return runningSum + num
        else:
            runningSum = runningSum*10 + (num%10)*10
            return self.reverseNumber(num//10, runningSum)

参考网址:https://leetcode.com/problems/palindrome-number/discuss/280596/Python-recursive-solution

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值