JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

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が記録されています

このように、単純な線形走査とカウンターの組み合わせだけで、余分なデータ構造を使わずに問題を効率的に解くことができます。

  1. JavaScriptで文字列内の特定文字の最大連続出現回数を求める方法

    本記事では、JavaScriptを使って「文字列の中である1文字が連続して出現する最大回数」を求める方法を解説します。アルゴリズムの考え方から実際のコード、実行結果まで、初心者にもわかりやすく説明していきます。 問題 次のようなJavaScript関数を作成することを目標とします。 第1引数として文字列を受け取る 第2引数として1文字を受け取る その文字が文字列内で連続して出現した最長の回数を数え、返す コード例 以下がその実装コードです。 {     const arr = str.split();     

  2. JavaScriptで文字列内の最長連続文字とその出現回数を検索する方法

    問題文字列を受け取り、その中で最も長く連続して現れる文字とその連続回数を返すJavaScript関数を作成する必要があります。戻り値は必ず2つの要素を持つ配列とします。1つ目の要素:文字列内で最も多く連続して登場する文字2つ目の要素:その文字が連続して登場した回数解決のアプローチこの問題は、文字列を先頭から1文字ずつ走査し、隣接する文字同士を比較することで解決できます。同じ文字が続いている間はカウントを増やし、異なる文字が出現した時点でカウントをリセットします。その際、これまでに記録した最大連続回数を上回っていれば、その文字と回数を結果として保存していきます。コード例以下が実際のコードです。c