You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:42:39