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

codeHs字符串wave函数问题:空格处理异常致随机测试失败

问题分析与修复方案

你的代码主要有以下几个问题:

  • 空格判断的正则表达式不合适:/^\s*$/是用来匹配整个字符串是否全为空格或空串的,用来判断单个字符虽然能工作,但不够准确且易混淆,换成/\s/.test(str.charAt(i))更直接。
  • 空格处理逻辑错误:遇到空格时直接i += 1并强制处理下一个字符,会导致连续空格时索引越界或生成错误的字符串,同时j的递增逻辑混乱——空格位置不需要生成对应元素,j不应该在此时递增。
  • 循环的索引管理混乱:for循环头里同时递增i和j,没有区分“需要生成元素”和“跳过空格”的场景,导致数组出现空位或错误元素。

修复后的代码

function wave(str) {
  const result = [];
  for (let i = 0; i < str.length; i++) {
    const char = str.charAt(i);
    // 跳过空格,不生成对应wave字符串
    if (/\s/.test(char)) {
      continue;
    }
    // 生成当前字符大写的wave字符串并加入结果数组
    result.push(str.slice(0, i) + char.toUpperCase() + str.slice(i + 1));
  }
  return result;
}

修复说明

  1. 直接遍历每个字符索引,遇到空格用continue跳过,不执行后续生成逻辑。
  2. 非空格字符时,直接拼接生成对应的大写字符串,用push添加到结果数组,无需额外管理j索引,避免混乱。
  3. 用let替代var,避免变量提升导致的潜在问题(现代JS更推荐)。

这个逻辑能正确处理任意含空格的输入,比如输入"he llo",会生成:

  • "He llo"
  • "hE llo"
  • "he Llo"
  • "he lLo"
  • "he llO"

完全符合需求,不会出现随机测试的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:18