JavaScriptで文字列内の最長の母音部分文字列の長さを求める方法
問題
文字列を引数として受け取るJavaScriptの関数を作成する必要があります。この関数は、母音(a、e、i、o、u)のみで構成される連続した部分文字列の中から、最も長いものの長さを返さなければなりません。
アプローチ
この問題は、文字列を先頭から順番に走査しながら、現在連続している母音の数をカウントすることで解決できます。具体的な手順は以下の通りです。
- cur:現在連続している母音の数を記録するカウンター変数
- max:これまでに見つかった最長の母音連鎖の長さを保持する変数
- 走査中の文字が母音であれば cur を1増やし、max より大きければ max を更新する
- 子音に遭遇した場合は cur を0にリセットし、連続性を断ち切る
このアルゴリズムの計算量はO(n)で、文字列を一度だけ走査すればよいため非常に効率的です。
コード例
以下がそのコードです −
const str = 'schooeal';
const findLongestVowel = (str = '') => {
let cur = 0
let max = 0
for (let i = 0; i < str.length; ++i) {
if ("aeiou".includes(str[i])) {
cur++
if (cur > max) {
max = cur
}
} else {
cur = 0
}
}
return max
};
console.log(findLongestVowel(str));
出力
4
コードの解説
上記の例では、入力文字列は「schooeal」です。この中で最も長い母音の連続部分は「ooea」であり、その長さは4となります。
処理の流れを見てみましょう。
- s・c・h は子音なので、cur は0のままです
- o・o・e・a の4文字が連続して母音であるため、cur は4まで増加し、max も4に更新されます
- 最後の l は子音なので cur はリセットされますが、すでに max には4が記録されています
このように、単純な線形走査とカウンターの組み合わせだけで、余分なデータ構造を使わずに問題を効率的に解くことができます。
-
JavaScriptで文字列内の特定文字の最大連続出現回数を求める方法
本記事では、JavaScriptを使って「文字列の中である1文字が連続して出現する最大回数」を求める方法を解説します。アルゴリズムの考え方から実際のコード、実行結果まで、初心者にもわかりやすく説明していきます。 問題 次のようなJavaScript関数を作成することを目標とします。 第1引数として文字列を受け取る 第2引数として1文字を受け取る その文字が文字列内で連続して出現した最長の回数を数え、返す コード例 以下がその実装コードです。 { const arr = str.split();  
-
JavaScriptで文字列内の最長連続文字とその出現回数を検索する方法
問題文字列を受け取り、その中で最も長く連続して現れる文字とその連続回数を返すJavaScript関数を作成する必要があります。戻り値は必ず2つの要素を持つ配列とします。1つ目の要素:文字列内で最も多く連続して登場する文字2つ目の要素:その文字が連続して登場した回数解決のアプローチこの問題は、文字列を先頭から1文字ずつ走査し、隣接する文字同士を比較することで解決できます。同じ文字が続いている間はカウントを増やし、異なる文字が出現した時点でカウントをリセットします。その際、これまでに記録した最大連続回数を上回っていれば、その文字と回数を結果として保存していきます。コード例以下が実際のコードです。c