Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में दो अपरकेस के बीच अधिकतम विशिष्ट लोअरकेस वर्णमाला


दिया गया कार्य दी गई स्ट्रिंग में दो अपरकेस वर्णमाला के बीच मौजूद अधिकतम विशिष्ट लोअरकेस वर्णमाला की संख्या ढूंढना है।

उदाहरण

इनपुट

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
  1. C++ में ट्री में दो गैर-प्रतिच्छेदी पथों का अधिकतम गुणनफल C++ में ट्री में दो गैर-प्रतिच्छेदी पथों का अधिकतम गुणनफल

    इस समस्या में, हमें n नोड्स के साथ एक अविभाजित कनेक्टेड ट्री T दिया गया है। हमारा कार्य C++ में ट्री में दो गैर-प्रतिच्छेदी पथों का अधिकतम गुणनफल ढूंढने के लिए एक प्रोग्राम बनाना है। समस्या विवरण - ट्री में दो गैर-प्रतिच्छेदी पथों का अधिकतम गुणनफल ढूंढने के लिए। हम सभी गैर-प्रतिच्छेदी पथ ढूंढेंगे औ

  1. C++ में BST के दो नोड्स के बीच अधिकतम तत्व C++ में BST के दो नोड्स के बीच अधिकतम तत्व

    समस्या कथन N तत्वों का एक ऐरे और दो पूर्णांक A, B दिए गए हैं जो दिए गए ऐरे से संबंधित हैं। arr[0] से arr[n-1] तक तत्व डालकर एक बाइनरी सर्च ट्री बनाएं। कार्य A से B तक के पथ में अधिकतम तत्व ढूंढना है। उदाहरण यदि ऐरे है {24, 23, 15, 36, 19, 41, 25, 35} तो हम BST को निम्नानुसार बना सकते हैं: यदि हम

  1. - C++ प्रोग्राम: ग्राफ में दो नोड्स के बीच पाथ खोजें

    इस प्रोग्राम में हम दिए गए ग्राफ पर DFS का उपयोग करके दो नोड्स के बीच पाथ मौजूद है या नहीं पता लगा सकते हैं। एल्गोरिदम Begin    function isReach() एक रिकर्सिव फंक्शन है जो जांचता है कि d, s से पहुंच योग्य है या नहीं:    A) सभी वर्टेक्स को अनविज़िटेड मार्क करें।    B) व