LeetCode回文数JavaScript解法运行输出false排查求助
LeetCode 回文数题解代码问题排查
核心错误原因
- JavaScript 中
/运算符默认返回浮点数,没有做整数截断处理。比如121 / 10得到的是12.1而非整数12,循环过程中x会一直是大于0的小数,不仅反转计算结果错误,甚至可能出现死循环。 - 没有处理边界场景:负数、末尾为0的非0数字,这两类数字天生不可能是回文数,无需进入反转逻辑。
修复后的代码
/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { // 提前排除不可能为回文数的场景 if (x < 0 || (x % 10 === 0 && x !== 0)) { return false; } var y = x, num = 0, rem; while(x > 0) { rem = x % 10; num = num * 10 + rem; // 对除法结果做整数截断,保证x每次循环都是整数 x = Math.floor(x / 10); } return num === y; };
验证说明
输入x=121时,反转计算过程为:
- 第一次循环:rem=1,num=1,x=12
- 第二次循环:rem=2,num=12,x=1
- 第三次循环:rem=1,num=121,x=0
循环结束,num===y返回true,符合预期。
内容的提问来源于stack exchange,提问作者DILIP KUMAR
相关产品推荐
相关产品推荐

