একটি স্ট্রিং s এবং ইন্টিজার k দেওয়া আছে। দৈর্ঘ্য k এর যেকোনো সাবস্ট্রিং-এ সর্বোচ্চ কতটুকু ভাওয়েল (a,e,i,o,u) থাকতে পারে তা বের করতে হবে।
ইনপুট: s = "abciiidef", k = 3 → আউটপুট: 3 (সাবস্ট্রিং "iii")
সমাধানের ধাপগুলো (স্লাইডিং উইন্ডো):
ভাওয়েল সেট
mবানাবপ্রথম
kক্যারেক্টারের ভাওয়েল কাউন্টcntret := max(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;
}
};
int main() {
Solution ob;
cout << (ob.maxVowels("abciiidef", 3));
}
ইনপুট
"abciiidef",3
আউটপুট
3