首页 > web前端 > js教程 > Codewars - 计算重复项

Codewars - 计算重复项

Susan Sarandon
发布: 2025-01-04 19:21:41
原创
314 人浏览过

问候。

Codewars - Counting Duplicates

我在本系列中发布了 Codewars 挑战和我的思考过程。我尽可能使用 JS 和 Node 18。只是为了清楚起见,我正在合理使用它们。

对于“计算重复项”挑战,我将从以下开始:

function duplicateCount(text){
  text = text.toString();
  let countTotal = {"max":0};
  let letter = '';
  for (let i=0 ; i < text.length ; i++){
    letter = text.at(i).toLowerCase();
    if (letter){
      countTotal[letter] = countTotal[letter] ? countTotal[letter]++ : 1;
      if (countTotal[letter] > countTotal["max"]){
        countTotal["max"] = countTotal[letter];
      }
    }
  }
  return countTotal["max"];
}
登录后复制

似乎...罗嗦。想知道这么多的话是否真的指向正确的方向。如果你愿意自己思考的话,我会给你一点时间。

3...

2...

1...

1/2...

1/4...

好吧,我想这就够了。不。来自湾区的俚语已经进入网络,所以请允许我这么说:这是hella错误。

问题是,我试图找出重复次数最多的字母有多少个重复的。结果我们需要回答有多少重复的类型。不区分大小写。

AbC -> 0->没有字母重复
AbCC-> 1-> “C”重复,我们不在乎多少次
AbBCC-> 2-> “b”和“c”重复,我们不在乎多少次或大小写

我们可以利用 JS 中的对象字面量为每个字母创建一个计数器。然后,一个属性可以是“重复”,这将是一个计数器,仅当一个字母出现两次时才会增加。

if (countTotal[letter]==2){
        countTotal.repetitions++;
      }
登录后复制

完整解决方案:

function duplicateCount(text){
  text = text.toString();
  let countTotal = {"repetitions": 0};
  let letter = '';
  for (let i=0 ; i < text.length ; i++){
    letter = text.at(i).toLowerCase();
    if (letter){
      (countTotal[letter] === undefined) ? countTotal[letter] = 0 : null;
      countTotal[letter]++;
      if (countTotal[letter]==2){
        countTotal.repetitions++;
      }
    }
  }
  return countTotal["repetitions"];
}
登录后复制

用了一段时间,还可以改进。

保重。喝水???.

上一页

以上是Codewars - 计算重复项的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板