कार्य को देखते हुए लंबाई के सबस्ट्रिंग की अधिकतम संख्या ज्ञात करना है 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