দেওয়া কাজ হচ্ছে একটি স্ট্রিং-এ দুটি আপারকেস আলফাবেটের মাঝপথে সর্বোচ্চ কতগুলো স্বতন্ত্র লোয়ারকেস আলফাবেট আছে তা বের করা।
উদাহরণ দিয়ে বুঝি −
ইনপুট
str = "JKyubDoorG"
আউটপুট
3
ব্যাখ্যা
"yub" দুইটি আপারকেস আলফাবেট K এবং D-এর মাঝপথে আছে যা কাউন্ট ৩ করে।
"oor"ও দুইটি আপারকেস D এবং G-এর মাঝপথে আছে যা কাউন্ট ২ করে কারণ 'o' রিপিট হয়েছে এবং আমরা স্বতন্ত্র আলফাবেট খুঁজছি।
অতএব, আউটপুট ৩।
ইনপুট
str = "ABcefsTaRpaep"
আউটপুট
4
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি নিম্নরূপ
Max() ফাংশনে int size = s.length() ইনিশিয়ালাইজ করা হয়ে স্ট্রিং-এর দৈর্ঘ্য সংরক্ষণ।
i = 0 থেকে i<size পর্যন্ত লুপ করে চেক করা হয় if (s[i] >= 'A' && s[i] <= 'Z')। যদি সত্য হয় তবে I ইনক্রিমেন্ট এবং ব্রেক।
int ans = 0 ইনিশিয়ালাইজ করা হয় চূড়ান্ত উত্তর এবং আরেকটি অ্যারে cnt[26] = {0}।
i = 0 থেকে i<size পর্যন্ত লুপ করে চেক করা হয় if (s[i] >= 'A' && s[i] <= 'Z') করেন্ট আলফাবেট আপারকেস কিনা। যদি সত্য হয় তবে int CurrMax = 0 ইনিশিয়ালাইজ করা হয় বর্তমান ম্যাক্সিমাম মান সংরক্ষণের জন্য।
i = 0 থেকে i<26 পর্যন্ত লুপ করে চেক করা হয় if (cnt[i] > 0)। যদি সত্য হয় তবে CurrMax ইনক্রিমেন্ট।
ফর লুপের বাইরে, ans আপডেট করা হয় ans = max(ans, CurrMax); দ্বারা এবং cnt[] অ্যারে রিসেট করা হয় memset(cnt, 0, sizeof(cnt)); দিয়ে।
উপরের if() স্টেটমেন্ট বন্ধ এবং চেক করা হয় if (s[i] >= 'a' && s[i] <= 'z')। যদি সত্য হয় তবে cnt[s[i] - 'a']++।
ফর লুপ বন্ধ এবং ans রিটার্ন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int Max(string s){
int size = s.length();
// Ignore the lowercase alphabets in beginning
for (int i = 0; i < size; i++){
if (s[i] >= 'A' && s[i] <= 'Z'){
i++;
break;
}
}
int ans = 0;
int cnt[26] = { 0 };
for (int i = 0; i < size; i++) {
// If alphabet is uppercase,
if (s[i] >= 'A' && s[i] <= 'Z'){
//Counting all lower case
//distinct alphabets
int CurrMax = 0;
for (int i = 0; i < 26; i++){
if (cnt[i] > 0)
CurrMax++;
}
// Update ans
ans = max(ans, CurrMax);
// Reset count array
memset(cnt, 0, sizeof(cnt));
}
// If alphabet is lowercase
if (s[i] >= 'a' && s[i] <= 'z')
cnt[s[i] - 'a']++;
}
return ans;
}
// Driver function
int main(){
string str = "JKyubDoorG";
cout << Max(str);
return 0;
}আউটপুট
3