Codewars - 重複のカウント

Susan Sarandon
リリース: 2025-01-04 19:21:41
オリジナル
313 人が閲覧しました

ご挨拶

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...

わかりました、それで十分だと思います。いいえ、ベイエリアのスラングがウェブ上に広まったので、私に言わせれば、それはまったく間違っています。

問題は、最も重複している文字の重複がいくつあるか調べようとしていたということです。重複するタイプがいくつあるかを答える必要があることがわかりました。大文字と小文字は区別されません。

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート