【アルゴリズム】最頻出文字を探そう。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の値を評価するだけです。
日常の中に潜む問題もアルゴリズムで効率的にできる。ワクワクしながら読める本。
この記事が気に入ったらサポートをしてみませんか?