首頁 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板