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
相关产品推荐
相关产品推荐

