問候。
我在這個系列中發布了 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中文網其他相關文章!