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

查找字符串'efg'第三次出现位置的JavaScript代码结果错误原因排查

代码错误原因分析

你的代码存在两处核心逻辑错误,导致无法得到正确结果:

  • 位置计算时机错误
    当判断到i位置起始为efg时,i本身就是这段匹配字符串的0基起始索引,但你的代码先执行了i += 3把索引后移3位,再执行result = i + 1,相当于给正确的起始索引多加了4,结果直接偏移。
  • 索引转换逻辑错误
    题目预期输出的20是1基索引,正确的转换逻辑是「0基起始索引 + 1」,不需要额外叠加其他偏移值。

你给出的测试用例中,第三次efg的0基起始索引为19,转换为1基就是19 + 1 = 20,和预期结果完全一致。

修正后的核心逻辑片段

if (string[i] == 'e' && string[i + 1] == 'f' && string[i + 2] == 'g') {
    count = count + 1;
    // 匹配到第三次时先记录位置,再移动索引
    if (count == 3) {
        result = i + 1; // 0基转1基,得到预期的位置结果
        break;
    }
    i += 3;
}

内容的提问来源于stack exchange,提问作者logesh waran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:54:02