问候。
我在本系列中发布了 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中文网其他相关文章!