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

字符串最高得分单词计算:代码返回结果错误求助

修正计算单词得分并返回最高分单词的函数

任务说明

给定一个字符串,返回得分最高的单词,得分规则如下:

  • 每个元音(["a", "e", "i", "o", "u", "y"])加1分
  • 每个辅音["b", "d"]减1分

示例:

  • 单词"butterfly"得分为2:3个元音("u","e","y")加3分,辅音"b"减1分
  • 单词"day"得分为2:2个元音("a","y")加2分

现有代码问题

以下是我写的代码,但传入"what a beautiful day"时,函数返回最后一个单词"day",而非得分最高的"beautiful":

function countVowels(string) {
  let vowels = ["a", "e", "i", "o", "u"] 
  let constants = ["b", "d"]

  let words = string.trim().split(" ")

  let highestScore = " ";
  let count =0;
  
  for(const c of words){
    for (let i=0; i<c.length; i++){

        if(vowels.includes(c[i])) {
        highestScore = c
        count++;
        }
        else if (constants.includes(c[i])) count--    
    }
}
console.log(highestScore)
return highestScore;

}

countVowels("what a beautiful day")

问题分析

  1. 元音数组缺失元素:规则里的元音包含y,但代码中vowels数组没加,导致计算时少统计y的得分
  2. 全局分数变量错误:只用一个全局count累加所有单词的分数,无法单独计算每个单词的得分
  3. 最高分更新逻辑错误:遇到元音就直接把当前单词设为highestScore,没有比较当前单词的分数和历史最高分,最终只会返回最后一个被遍历到的单词

修正后的代码

function countVowels(string) {
  // 修正元音数组,加入规则要求的y
  const vowels = ["a", "e", "i", "o", "u", "y"];
  const consonants = ["b", "d"];

  const words = string.trim().split(" ");

  let highestScoreWord = "";
  let highestScore = -Infinity; // 初始设为极小值,确保第一个单词能被选中

  for (const word of words) {
    let currentScore = 0; // 每个单词单独计算得分,初始化当前分数
    for (const char of word) {
      if (vowels.includes(char)) {
        currentScore++;
      } else if (consonants.includes(char)) {
        currentScore--;
      }
      // 其他字符不影响分数,无需处理
    }

    // 比较当前单词分数与最高分,更新最高分和对应单词
    // 如果分数相同,保留先出现的单词(符合示例中beautiful先出现则返回它的逻辑)
    if (currentScore > highestScore) {
      highestScore = currentScore;
      highestScoreWord = word;
    }
  }

  console.log(highestScoreWord);
  return highestScoreWord;
}

countVowels("what a beautiful day"); // 输出:beautiful

代码说明

  • 为每个单词单独初始化currentScore,确保每个单词的得分独立计算
  • 修正元音数组,加入y,符合规则要求
  • 初始最高分设为-Infinity,保证第一个单词的分数一定能替换初始值
  • 只有当当前单词分数高于历史最高分,才更新最高分和对应单词,分数相同时保留先出现的单词

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:20:38