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