LeetCode JavaScript回文数判断代码返回错误结果求助
JavaScript回文数判断代码错误修复
问题根因
代码核心错误出在字符串反转步骤的拆分逻辑:
- 错误代码中使用
split(' ')对数字转成的字符串做拆分,split(' ')的作用是按空格作为分隔符切割字符串 - 数字转字符串后不存在空格字符,因此切割后得到的是长度为1的数组,数组元素就是原字符串本身,后续执行
reverse()、join('')后得到的内容和原字符串完全一致,导致所有非负数都会被误判为回文数,这就是输入20这类非回文数也返回true的原因。
修复方案
将split(' ')的参数从空格改为空字符串'',即可按单个字符切割字符串,反转后得到正确的倒序字符串。
额外优化点:可以把负数判断的逻辑提前,减少不必要的字符串转换操作,不影响结果但执行效率更高。
修复后完整代码
var isPalindrome = function(x) { // 负数直接返回false,提前判断减少后续计算 if(x < 0 ) return false; let xToString = x.toString(); // 传入空字符串split才会拆分为单字符数组 let reversed = xToString.split('').reverse().join(''); return xToString === reversed; };
验证说明
- 输入回文数比如121、1221时,反转后字符串和原字符串一致,正确返回
true - 输入非回文数比如20、123时,反转后字符串为'02'、'321',和原字符串不相等,正确返回
false - 输入负数比如-121时,提前判断直接返回
false,符合预期
内容的提问来源于stack exchange,提问作者AviT
相关产品推荐
相关产品推荐

