कार्य को देखते हुए लंबाई के सबस्ट्रिंग की अधिकतम संख्या ज्ञात करना है K समान पात्रों से मिलकर। एक स्ट्रिंग s और दूसरा पूर्णांक दिया गया K , हमें K . आकार के उप-स्ट्रिंग की घटना को गिनना होगा जिनके समान वर्ण हैं।
जो उप-स्ट्रिंग पाए जाते हैं, उनमें से हमें उस उप-स्ट्रिंग को चुनना होगा जो अधिकतम समय में घटित हो।
आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट
s = ”tuuxyyuuc”, K = 2
आउटपुट
2
स्पष्टीकरण
यहां लंबाई 2 और समान वर्ण वाले उप-स्ट्रिंग हैं:"uu" और "yy" लेकिन जैसा कि यह देखा जाता है कि "yy" केवल 1 बार होता है और "uu" 2 बार मौजूद होता है। इसलिए आउटपुट 2 हो जाता है।
इनपुट
s = “hhigggff”, K = 3
आउटपुट
1
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
मैक्स () फ़ंक्शन में, अंतिम उत्तर को स्टोर करने के लिए int ans =0 को इनिशियलाइज़ करें, स्ट्रिंग के आकार को स्टोर करने के लिए size =str.size() और उन वर्णों को संग्रहीत करने के लिए char c घोषित करें जिनकी हमें जाँच करने की आवश्यकता है।
-
j =0 से j <26 तक लूप करें और c ='a' + j लगाएं क्योंकि हम प्रत्येक वर्ण की जांच करेंगे।
-
वर्तमान वर्ण वाले उप-सरणी की घटना को संग्रहीत करने के लिए परिवर्तनीय int CurrCh =0 प्रारंभ करें।
-
i =0 से i <=आकार – K तक लूप करें और जांचें कि क्या (str[i] !=c)। यदि ऐसा है, तो जारी रखें जोड़ें; बयान।
-
वर्तमान वर्ण की उप-सरणी की लंबाई को संग्रहीत करने के लिए गिनती =0 प्रारंभ करें।
-
कंडीशन के साथ थोड़ी देर का लूप बनाएं (i
गिनती . जबकि लूप के बाहर मैं 1 से कम हो जाता हूं। -
जांचें कि क्या (गिनती ==के)। अगर ऐसा है, तो CurrCh में वृद्धि करें ।
-
दूसरा फॉर लूप बंद करें और Ans . का मान अपडेट करें ans =max(ans, CurrCh) डालकर।
-
अंत में पहले फॉर लूप को बंद करें और उत्तर . लौटाएं ।
उदाहरण
#include <bits/stdc++.h> using namespace std; int Max(string str, int K){ int ans = 0, size = str.size(); char c; //Checking for all characters for (int j = 0; j < 26; j++){ c = 'a' + j; //checking for current character int CurrCh = 0; for (int i = 0; i <= size - K; i++){ if (str[i] != c) continue; //Counting the size of sub-string int count = 0; while (i < size && count != K && str[i] == c){ i++; count++; } i--; //Increment CurrCh if sub-string has length K if (count == K) CurrCh++; } //Update ans ans = max(ans, CurrCh); } return ans; } //main function int main(){ string str = "tuuuxyuuu"; int K = 3; cout << Max(str, K); return 0; }
आउटपुट
2