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

C++で指定された長さのサブストリング内の母音の最大数


文字列sと整数kがあるとします。長さkのsの部分文字列で母音文字の最大数を見つける必要があります。

したがって、入力がs ="abciiidef"、k =3の場合、出力は3

になります。

これを解決するには、次の手順に従います-

  • cnt:=0

  • 1セットmを定義する

  • 母音vごとに、実行します

    • vをmに挿入

  • ret:=0

  • 初期化i:=0の場合、i

    • cnt:=cnt +(s [i]がmの場合は1、それ以外の場合は0)

  • ret:=retとcntの最大値

  • n:=sのサイズ

  • 初期化i:=kの場合、i

    • s [i --k]がmのメンバーである場合、-

      • (cntを1減らします)

    • cnt:=cnt +(s [i]がmの場合は1、それ以外の場合は0)

    • ret:=retとcntの最大値

  • retを返す

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int maxVowels(string s, int k) {
      int cnt = 0;
      set<char> m;
      for (auto it : { 'a', 'e', 'i', 'o', 'u' })
      m.insert(it);
      int ret = 0;
      for (int i = 0; i < k; i++) {
         cnt += m.count(s[i]) ? 1 : 0;
      }
      ret = max(ret, cnt);
      int n = s.size();
      for (int i = k; i < n; i++) {
         if (m.count(s[i - k])) {
            cnt--;
         }
         cnt += m.count(s[i]) ? 1 : 0;
         ret = max(ret, cnt);
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.maxVowels("abciiidef",3));
}

入力

"abciiidef",3

出力

3

  1. 最大ベンド数のC++パス長

    二分木が与えられる問題を解決するため。次に、曲がりの数が最大のパスを見つける必要があります。つまり、パスの方向が左から右に、またはその逆に変化する場合、たとえば、曲がりが考慮されます 入力- 出力- 6 このアプローチでは、ツリーをトラバースして、以前の動きを追跡します。方向が変わった場合は、曲げカウントを更新するだけで、最大値が見つかります。 解決策を見つけるためのアプローチ このアプローチでは、すべてのパスをトラバースし、回答を更新するベンドの最大数を見つけます。 例 #include <bits/stdc++.h> using namespace std; s

  2. 指定された番号がC++でPronicであるかどうかを確認します

    ここでは、番号が方形数であるかどうかを確認する方法を説明します。長方形を形成するように配置できる数は、方形数と呼ばれます。最初のいくつかの方形数は、0、2、6、12、20、30、42、56、72、90、110、132、156、182、210、240、272、306、342です。 2つの連続する整数。したがって、方形数n =x *(x + 1)。 ここでは、いくつかの方形数を確認して生成します。 例 #include <iostream> #include <cmath> using namespace std; bool isPronicNumber(int num)