查找字符串'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
相关产品推荐
相关产品推荐

