You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode回文数问题代码报错求助:-121、10返回结果异常

回文数代码错误原因解析及修正

核心错误点

你的代码存在两个关键问题:

  • 返回值类型错误:题目要求返回布尔值True/False,但你直接返回了反转后的字符串rev。在Python中,非空字符串会被自动视为True,输入121时返回"121"被判定为True只是巧合,逻辑完全错误。
  • 未处理特殊情况:没有考虑负数和末尾为0的正数的特性。

具体测试用例错误原因

  • 输入x=-121:转为字符串是"-121",反转后得到"121-",你返回这个非空字符串会被当作True。但负数不可能是回文数,负号在开头,反转后跑到结尾,和原数结构完全不对称。
  • 输入x=10:转为字符串是"10",反转后得到"01",同样非空字符串被视为True。但10反转后实际是1,和原数10不相等,不属于回文数。

修正后的代码

用字符串切片简化反转逻辑的版本:

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        # 负数直接返回False,负号无法对称
        if x < 0:
            return False
        num = str(x)
        # 反转字符串后和原字符串比较,返回布尔值
        return num == num[::-1]

或者保留你的循环反转逻辑的修正版:

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x < 0:
            return False
        num = str(x)
        rev = ""
        for i in num:
            rev = i + rev
        # 比较反转结果和原字符串,返回布尔结果
        return rev == num

内容的提问来源于stack exchange,提问作者stemple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:42:11