見出し画像

【アルゴリズム】最頻出文字を探そう。javascriptで実装する。


例えば、「javascript」という単語で登場回数の一番多い文字は何か?「a」が2回登場するので、この場合「a」ですね。 

javascript

実装例

function maxCharacter(str) {
 const charMap = {};
 let maxNum = 0;
 let maxChar = "";

 str.split("").forEach(function(char) {
   if (charMap[char]) {
     charMap[char]++;
   } else {
     charMap[char] = 1;
   }
 });

 for (let char in charMap) {
   if (charMap[char] > maxNum) {
     maxNum = charMap[char];
     maxChar = char;
   }
 }
 return maxChar;
}

O(n)

ポイントは文字の登場回数を、あらかじめ記録することです。例の場合だと、charMap={}というオブジェクトを用意します。

charMapをconsole.log()してみましょう。

{ j: 1, a: 2, v: 1, s: 1, c: 1, r: 1, i: 1, p: 1, t: 1 }

つまりマッピングですね。

初めて登場する文字は「1」でマッピング。再度登場する文字はインクリメントする。これが出来れば、あとはmaxの値を評価するだけです。


日常の中に潜む問題もアルゴリズムで効率的にできる。ワクワクしながら読める本。


この記事が気に入ったらサポートをしてみませんか?