दिए गए स्ट्रिंग में दो अपर केस अक्षरों के बीच मौजूद अलग-अलग लोअर केस अक्षरों की अधिकतम संख्या ज्ञात करना कार्य को देखते हुए है।
आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट
str = “JKyubDoorG”
आउटपुट
3
स्पष्टीकरण
"yub" दो अपर केस अक्षर K और D के बीच मौजूद होता है जो गिनती 3 बनाता है।
"ऊर" भी दो बड़े अक्षरों डी और जी के बीच मौजूद है जो गिनती 2 को 'ओ' के रूप में दोहराता है और हम अलग अक्षरों की तलाश में हैं।
इसलिए, आउटपुट 3 है।
इनपुट
str = “ABcefsTaRpaep”
आउटपुट
4
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
फ़ंक्शन में अधिकतम () int आकार . प्रारंभ करें =s.length() दिए गए स्ट्रिंग की लंबाई को स्टोर करने के लिए।
-
i =0 से i<आकार तक लूप करें और जांचें कि क्या (s[i]>='A' &&s[i] <='Z')। अगर ऐसा है तो I increment में वृद्धि करें और तोड़ो;
-
int Ans . को इनिशियलाइज़ करें =0 अंतिम उत्तर और एक अन्य सरणी cnt[26] ={0}.
. को संग्रहीत करने के लिए -
i =0 से i<आकार तक लूप करें, फिर जांचें कि क्या (s[i]>='A' &&s[i] <='Z') वर्तमान वर्णमाला अपर केस में है या नहीं। अगर ऐसा है तो int CurrMax . को इनिशियलाइज़ करें =0 वर्तमान अधिकतम मूल्य को संग्रहीत करने के लिए।
-
i =0 से i<26 तक लूप करें और जांचें कि क्या (cnt[i]> 0) है। अगर ऐसा है, तो CurrMax बढ़ाएँ।
-
लूप के बाहर, उत्तरों update को अपडेट करें ans =max(ans, CurrMax) डालकर; और memset(cnt, 0, sizeof(cnt));
का उपयोग करके cnt[] सरणी को रीसेट करें। -
उपरोक्त if() कथन को बंद करें और जांचें कि क्या (s[i]>='a' &&s[i] <='z')। यदि ऐसा है तो वेतन वृद्धि cnt[s[i] - 'a'].
-
लूप के लिए बंद करें और उत्तर दें।
उदाहरण
#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