HackerRank Palindrome Index挑战JS函数返回undefined问题求解
问题原因
- reverse函数定义错误:你声明的reverse函数接收
string作为入参,但函数内部直接读取了外层的原始字符串s做反转,无论传入什么参数,返回结果都是原始字符串的反转,逻辑完全错误。 - splice方法使用错误:
Array.splice()的返回值是被删除的元素组成的数组,而非修改后的原数组。你代码中连续两次调用splice,第一次删除i位置元素后,第二次操作的已经是修改后的数组,且判断条件对比的是两次被删除的单个字符的反转结果,永远不可能符合预期。 - 上述错误导致if判断始终不成立,循环结束后函数没有执行return语句,默认返回undefined。
修复方案
直接用字符串切片生成删除对应下标后的新字符串做判断,避免操作数组的逻辑错误:
function palindromeIndex(s) { const reverse = str => str.split('').reverse().join(''); if (reverse(s) === s) return -1; for (let i = 0; i < s.length; i++) { const temp = s.slice(0, i) + s.slice(i + 1); if (reverse(temp) === temp) return i; } return -1; } console.log(palindromeIndex("racezcar")); // 正确输出4
内容的提问来源于stack exchange,提问作者Melanie Sigrid
相关产品推荐
相关产品推荐

