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

调试回文字符串判断代码:while循环致浏览器崩溃求助

回文字符串判断代码调试方案

核心问题分析

你的代码会导致浏览器崩溃,以及逻辑判断错误,主要有以下几个问题:

  • 死循环触发崩溃:left + 1和right - 1仅做了数值计算,没有将结果赋值回变量,导致left和right的位置永远不变。如果输入字符串首尾字符相等,while循环会无限执行,直接引发浏览器崩溃。必须改为赋值操作:left += 1(或left++)、right -= 1(或right--)。
  • 循环条件逻辑错误:原循环条件string[left] === string[right]会导致「首尾字符不等的非回文字符串」直接返回true(因为循环根本不会执行),比如输入"abc"会被误判为回文。正确的循环条件应该是left < right,只要左指针未超过右指针,就继续比对。
  • 中间值判断冗余且失效:提前计算的middle仅对应初始状态的中间位置,指针移动后该值失去意义;且left === middle && right === middle仅适用于奇数长度字符串,偶数长度字符串永远无法触发该退出条件,导致循环无法正常终止。用left < right作为循环条件,可自动在指针相遇时终止循环,无需额外判断。

修复后的代码

function isPalindrome(string) {
  let left = 0;
  let right = string.length - 1;

  while (left < right) {
    if (string[left] !== string[right]) {
      return false;
    }
    left++;
    right--;
  }

  return true;
}

代码说明

  • 直接在比对到不等字符时返回false,无需额外维护状态变量,逻辑更简洁
  • 循环条件left < right确保所有对称位置的字符都能被比对到,自动处理奇偶长度的字符串

内容的提问来源于stack exchange,提问作者Antonio Pavicevac-Ortiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:12:14