दिया गया कार्य दी गई स्ट्रिंग में दो अपरकेस वर्णमाला के बीच मौजूद अधिकतम विशिष्ट लोअरकेस वर्णमाला की संख्या ढूंढना है।
उदाहरण
इनपुट
str = "JKyubDoorG"
आउटपुट
3
व्याख्या
"yub" दो अपरकेस वर्णमाला K और D के बीच मौजूद है जो गिनती 3 बनाता है।
"oor" भी दो अपरकेस वर्णमाला D और G के बीच मौजूद है जो गिनती 2 बनाता है क्योंकि 'o' एक दोहराव वाला वर्णमाला है और हम विशिष्ट वर्णमाला ढूंढ रहे हैं।
इसलिए, आउटपुट 3 है।
इनपुट
str = "ABcefsTaRpaep"
आउटपुट
4
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण इस प्रकार है
- Max() फ़ंक्शन में int size = s.length() आरंभ करें ताकि दी गई स्ट्रिंग की लंबाई संग्रहीत हो सके।
- i = 0 से i < size तक लूप करें और जांचें कि क्या (s[i] >= 'A' && s[i] <= 'Z')। यदि हां तो I बढ़ाएं और ब्रेक करें।
- अंतिम उत्तर संग्रहीत करने के लिए int ans = 0 आरंभ करें और एक और सरणी cnt[26] = {0}।
- i = 0 से i < size तक लूप करें फिर जांचें कि क्या (s[i] >= 'A' && s[i] <= 'Z') यह जांचने के लिए कि क्या वर्तमान वर्णमाला अपरकेस में है। यदि हां तो वर्तमान अधिकतम मान संग्रहीत करने के लिए int CurrMax = 0 आरंभ करें।
- i = 0 से i < 26 तक लूप करें और जांचें कि क्या (cnt[i] > 0)। यदि हां, तो CurrMax बढ़ाएं।
- for लूप के बाहर, ans को ans = max(ans, CurrMax); रखकर अपडेट करें; और memset(cnt, 0, sizeof(cnt)) का उपयोग करके cnt[] सरणी रीसेट करें।
- ऊपर के if() स्टेटमेंट को बंद करें और जांचें कि क्या (s[i] >= 'a' && s[i] <= 'z')। यदि हां तो cnt[s[i] - 'a']++ बढ़ाएं।
- for लूप बंद करें और ans वापस करें।
कार्यक्रम उदाहरण
#include <bits/stdc++.h>
using namespace std;
int Max(string s){
int size = s.length();
// शुरुआत में लोअरकेस वर्णमाला को अनदेखा करें
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 (s[i] >= 'A' && s[i] <= 'Z'){
// सभी लोअरकेस गिनना
// विशिष्ट वर्णमाला
int CurrMax = 0;
for (int i = 0; i < 26; i++){
if (cnt[i] > 0)
CurrMax++;
}
// ans अपडेट करें
ans = max(ans, CurrMax);
// काउंट सरणी रीसेट करें
memset(cnt, 0, sizeof(cnt));
}
// यदि वर्णमाला लोअरकेस है
if (s[i] >= 'a' && s[i] <= 'z')
cnt[s[i] - 'a']++;
}
return ans;
}
// ड्राइवर फ़ंक्शन
int main(){
string str = "JKyubDoorG";
cout << Max(str);
return 0;
}
आउटपुट
3