JS中查找数组首个回文字符串的程序异常,请协助修正
修正查找数组中第一个回文字符串的JavaScript程序
你的代码问题出在isPalindrome函数的索引初始化上:
- 字符串的索引从0开始,最后一个字符的索引是
str.length - 1,但你把right初始值设为str.length,此时str.charAt(right)会返回undefined,导致和左侧字符对比永远不相等,函数直接返回false,无法正确识别回文字符串。
修正后的完整代码:
function isPalindrome(str) { let left = 0, right = str.length - 1; // 修正right的初始值 while(left < right) { if(str.charAt(left) !== str.charAt(right)) { return false; } left++; right--; } return true; } function firstPalindrome(words) { for (let i = 0; i < words.length; i++) { if (isPalindrome(words[i])) { return words[i]; } } return ""; } console.log(firstPalindrome(["abc", "car", "ada", "racecar", "cool"])); // 输出:"ada"
修改说明:
- 仅调整
isPalindrome函数中right的初始值为str.length - 1,确保左右指针一开始就指向字符串的首尾字符,之后逐步向中间靠拢对比,就能正确判断回文字符串。 - 修正后运行代码,给定数组会返回第一个回文字符串
"ada",符合预期。
内容的提问来源于stack exchange,提问作者Sougata Mukherjee
相关产品推荐
相关产品推荐

