দেওয়া কাজ হচ্ছে দৈর্ঘ্য K-এর সমান ক্যারেক্টার वाले সাবস্ট্রিং-এর ম্যাক্সিমাম কাউন্ট বের করা। একটি স্ট্রিং s এবং আরেকটি পূর্ণসংখ্যা K দেওয়া আছে, আমাদেরকে আকার K-এর সাব-স্ট্রিং যা একই ক্যারেক্টার ধারণ করে তাদের ঘটনা গণনা করতে হবে।
পাওয়া সাব-স্ট্রিংগুলোর মধ্যে যেটি সর্বোচ্চবার আসেছে সেটি বেছে নিতে হবে।
উদাহরণ দিয়ে বুঝি −
ইনপুট
s = "tuuxyyuuc", K = 2
আউটপুট
2
ব্যাখ্যা
এখানে দৈর্ঘ্য ২ এবং একই ক্যারেক্টার والے সাব-স্ট্রিংগুলো হচ্ছে: "uu" এবং "yy" কিন্তু দেখা যায় "yy" শুধু ১বার আসেছে আর "uu" ২বার আছে। তাই আউটপুট হয় ২।
ইনপুট
s = "hhigggff", K = 3
আউটপুট
1
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি নিম্নরূপ
Max() ফাংশনে, int ans = 0 ইনিশিয়ালাইজ করা হয় চূড়ান্ত উত্তর, size = str.size() স্ট্রিং-এর আকার এবং char c ডিক্লেয়ার করা হয় যেটি চেক করার ক্যারেক্টার সংরক্ষণ করবে।
j = 0 থেকে j < 26 পর্যন্ত লুপ করে c = 'a' + j সেট করা হয় কারণ আমরা প্রতিটি ক্যারেক্টার চেক করব।
ভেরিয়েবল int CurrCh = 0 ইনিশিয়ালাইজ করা হয় বর্তমান ক্যারেক্টার ধারণকারী সাব-অ্যারে ঘটনা সংরক্ষণের জন্য।
i = 0 থেকে i <= size – K পর্যন্ত লুপ করে চেক করা হয় if (str[i] != c)। যদি সত্য হয় তবে continue; স্টেটমেন্ট।
count = 0 ইনিশিয়ালাইজ করা হয় বর্তমান ক্যারেক্টার-এর সাব-অ্যারে দৈর্ঘ্য সংরক্ষণের জন্য।
চেক করা হয় if (count == K)। যদি সত্য হয় তবে CurrCh ইনক্রিমেন্ট।
দ্বিতীয় ফর লুপ বন্ধ এবং ans আপডেট করা হয় ans = max(ans, CurrCh) দিয়ে।
শেষে প্রথম ফর লুপ বন্ধ এবং ans রিটার্ন।
while লুপ কন্ডিশন (i < size && count != K && str[i] == c) এবং লুপের ভিতরে i এবং count ইনক্রিমেন্ট। while লুপের বাইরে i ১ কমানো হয়।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int Max(string str, int K){
int ans = 0, size = str.size();
char c;
//Checking for all characters
for (int j = 0; j < 26; j++){
c = 'a' + j;
//checking for current character
int CurrCh = 0;
for (int i = 0; i <= size - K; i++){
if (str[i] != c)
continue;
//Counting the size of sub-string
int count = 0;
while (i < size && count != K && str[i] == c){
i++;
count++;
}
i--;
//Increment CurrCh if sub-string has length K
if (count == K)
CurrCh++;
}
//Update ans
ans = max(ans, CurrCh);
}
return ans;
}
//main function
int main(){
string str = "tuuuxyuuu";
int K = 3;
cout << Max(str, K);
return 0;
}আউটপুট
2