この問題では、ちょうど K 個の母音を含む長さ K の部分文字列の総数を見つける必要があります。問題を解決する 2 つの異なる方法を見ていきます。簡単な方法を使用して、長さ K の各部分文字列内の母音の数を確認できます。さらに、この問題を解決するためにスライディング ウィンドウ アプローチを使用することもできます。
問題文 - 小文字と大文字のアルファベットを含む、長さ N の文字列 str が与えられます。正確に X 個の母音を含む長さ K の部分文字列の総数を数える必要があります。
###例### 入力– str = "チュートリアルポイント"、K = 3、X = 2
出力– 6
説明– ちょうど 2 つの母音を含む長さ 3 の部分文字列は、「uto」、「ori」、「ria」、「ial」、「Poi」、「oin」です。 p>入力
– str = 'aeiou'、K = 2、X = 2
出力– 4
説明-長さ 2 で、ちょうど 2 つの母音を含む部分文字列は、「ae」、「ei」、「io」、「ou」です。
入力– str = 'fghjsdfdffg'、K = 5、X = 1
出力– 0
説明- 文字列 str には母音が含まれていないため、母音を 1 つ含む部分文字列は見つかりません。 方法1
ループを使用して、0 番目のインデックスから len - K インデックスまで反復します。ここで、「len」は文字列の長さです。
ループ内で、substr() メソッドを使用して、i 番目のインデックスから始まる長さ K の部分文字列を取得します。
countVowel() 関数を実行して、部分文字列内の母音の総数をカウントします。
部分文字列をトラバースします。現在の文字は母音です。「母音」の値に 1 を加えます。
「母音」を返します。
「cnt」の値を返します。
方法 2 スライディング ウィンドウ技術を使用して、この方法の問題を解決します。部分文字列から最初の文字を削除し、最後に 1 文字を追加します。さらに、現在の部分文字列内の母音の数を追跡し、それが X と等しい場合は、その数を 1 つ増やすことができます。
###アルゴリズム###特定の文字が母音かどうかに基づいてブール値を返す isVowel() 関数を定義します。
cntSubStr() 関数で、「total_vow」を定義し、ゼロに初期化して、現在のウィンドウに母音の合計を保存します。
###例### リーリー ###出力### リーリー
余分なスペースを使用しないため、スペースの複雑さ - O(1)。
以上が正確に X 個の母音を含む長さ K の部分文字列の数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。