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)