ご挨拶
このシリーズでは、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...
わかりました、それで十分だと思います。いいえ、ベイエリアのスラングがウェブ上に広まったので、私に言わせれば、それはまったく間違っています。
問題は、最も重複している文字の重複がいくつあるか調べようとしていたということです。重複するタイプがいくつあるかを答える必要があることがわかりました。大文字と小文字は区別されません。
ABC -> 0 ->文字の繰り返しはありません
AbCC -> 1 -> 「C」は何度でも繰り返します
AbBCC -> 2 -> 「b」と「c」を繰り返します。回数や大文字小文字は関係ありません
JS のオブジェクト リテラルを利用して、文字ごとにカウンターを作成できます。次に、プロパティの 1 つは「繰り返し」であり、文字が 2 回出現する場合にのみ増加するカウンターになります。
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 中国語 Web サイトの他の関連記事を参照してください。