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

求助:修复isAlphabet函数逻辑错误,实现正确字母顺序验证

问题分析与修复方案

你的代码存在三个关键问题,导致无法通过测试用例,下面逐一说明并修复:

1. 循环边界错误

原循环条件i < ch.length会导致当i等于字符串最后一个索引时,ch[i+1]为undefined,此时调用charCodeAt()会抛出错误,且这种情况下本就不需要进行比较(没有下一个字符)。正确的循环条件应该是i < ch.length - 1,只遍历到倒数第二个字符,确保每次都有有效的下一个字符可以比较。

2. 空字符串未处理

测试用例要求空字符串''返回false,但你的代码在空字符串时会直接跳过循环,返回true,不符合要求。需要先判断输入字符串长度为0的情况,直接返回false。

3. 单字符情况的隐含逻辑

测试用例要求单个字符(如'a')返回true,当字符串长度为1时,循环不会执行,直接返回true,这部分逻辑是对的,但需要结合边界判断一起处理。

修复后的完整代码

function isAlphabet(letters) {
    // 处理空字符串情况
    if (letters.length === 0) {
        return false;
    }
    const ch = letters.toLowerCase();
    // 循环到倒数第二个字符即可
    for (let i = 0; i < ch.length - 1; i++) {
        if (ch[i + 1].charCodeAt() - ch[i].charCodeAt() !== 1) {
            return false;
        }
    }
    return true;
}

验证所有测试用例

  • isAlphabet('abc') → true(循环执行i=0和i=1,两次差值都是1,返回true)
  • isAlphabet('aBc') → true(转小写后和'abc'逻辑一致)
  • isAlphabet('abd') → false(i=1时,d的charCode - b的charCode=2≠1,返回false)
  • isAlphabet('a') → true(长度为1,跳过循环返回true)
  • isAlphabet('') → false(直接触发空字符串判断)
  • isAlphabet('abcdefghjiklmnopqrstuvwxyz') → false(i=7时,j的charCode - h的charCode=2≠1,返回false)
  • isAlphabet('tuvwxyz') → true(所有相邻字符差值都是1)
  • isAlphabet('XYZ') → true(转小写后符合顺序)
  • isAlphabet('mnoprqst') → false(i=4时,r的charCode - p的charCode=2≠1,返回false)

内容的提问来源于stack exchange,提问作者Vladyslav Akopov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:23:25