LeetCode回文数问题输入10错误返回true的代码逻辑排查
代码逻辑错误分析
核心bug位置
你代码第一个条件分支的逻辑完全写反,是导致测试用例10返回true的直接原因:
if (x <= 9) { //negative numbers are not palindromes if (x < 0) { return false; } } else { return true; }
这段代码的执行逻辑是:
- 所有大于9的整数,都会直接走
else分支返回true,后续的「末位为0判断」「反转半位判断」逻辑完全不会执行 - 测试用例x=10满足
x>9,所以直接返回true,和你的预期相悖
正确分支逻辑
你原本想实现的是「0~9的正整数都是回文数,直接返回true;负数直接返回false」,对应修正后的分支代码为:
if (x <= 9) { // 负数不是回文数 if (x < 0) { return false; } // 0~9的正整数均为回文数,直接返回 return true; } // 大于9的数继续执行后续判断,不要直接返回
修正后验证
修改后测试x=10的执行流程:
- 10>9,不进入第一个分支
- 执行
x % 10 ==0判断,10%10=0,直接返回false,符合预期 - 其他测试用例如121也会正常进入后续反转逻辑,判定结果不受影响
内容的提问来源于stack exchange,提问作者PPProgrammer
相关产品推荐
相关产品推荐

