कार्य को देखते हुए एक स्ट्रिंग से दिए गए बाद के निष्कासन की अधिकतम संख्या ज्ञात करना है। एस्ट्रिंग एस दिया गया है और हमें बाद की अधिकतम संख्या 'एबीसी' ढूंढनी होगी जिसे स्ट्रिंग से हटाया जा सकता है।
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है:
इनपुट
s = ‘dnabcxy’
आउटपुट
1
स्पष्टीकरण - दिए गए स्ट्रिंग ('dnabcxy') में 'abc' का केवल एक अनुगमन पाया जा सकता है, इसलिए आउटपुट 1 है।
इनपुट
s = ‘zcabcxabc’
आउटपुट
2 (‘zcabcxabc’)
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
मैक्स () फंक्शन में वेरिएबल i, a, ab, abc को वैल्यू =0 और टाइप इंट के साथ इनिशियलाइज़ करें।
-
लूप i=0 से I
. तक -
लूप के अंदर जांचें कि क्या (s[i] =='a'), यदि ऐसा है तो a.
. का इंक्रीमेंट मान -
अन्यथा, जांचें कि क्या (एस [i] =='बी'), यदि सत्य है तो फिर से जांचें कि क्या (ए> 0) है। अगर दोनों शर्तें सही हैं तो a का मान 1 से घटाएं और ab का मान बढ़ाएं.
-
अंत में, जांचें कि क्या (s[i] =='c'), यदि सही है तो फिर से जांचें कि क्या (ab> 0) है। यदि दोनों शर्तें सत्य हैं तो ab के मान को 1 से घटाएं और abc का मान बढ़ाएँ।
-
वापसी एबीसी
उदाहरण
#include <bits/stdc++.h> using namespace std; int Max(string s){ int i=0, a=0, ab=0, abc=0; for (i = 0; i < s.length(); i++){ if (s[i] == 'a'){ a++; } else if (s[i] == 'b'){ if (a > 0){ a--; ab++; } } else if (s[i] == 'c'){ if (ab > 0){ ab--; abc++; } } } return abc; } //main function int main(){ string s = "zcabcxabc"; cout << Max(s); return 0; }
आउटपुट
2