दिए गए स्ट्रिंग में दो अपर केस अक्षरों के बीच मौजूद अलग-अलग लोअर केस अक्षरों की अधिकतम संख्या ज्ञात करना कार्य को देखते हुए है।
आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट
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