हमें केवल 0, 1 और 2 वाले स्ट्रिंग स्ट्र दिए गए हैं। लक्ष्य स्ट्र के सभी सबस्ट्रिंग्स को खोजना है जिनमें 0 के 1 और 2 के बराबर संख्याएं हैं। यदि str "12012" है। 0, 1 और 2 के बराबर वाले सबस्ट्रिंग "120", "201" और "012" होंगे। गिनती 3 होगी।
आइए उदाहरणों से समझते हैं।
इनपुट - str="112200120"
आउटपुट −0s, 1s, और 2s की समान संख्या वाले सबस्ट्रिंग्स की संख्या है - 5
स्पष्टीकरण - सबस्ट्रिंग होंगे
str[0-5]=”112200”, str[1-6]=”122001”, str[5-7]=”012”, str[6-8]=”120”, str[7-0]=”201”
इनपुट - str="12012"
आउटपुट −0s, 1s, और 2s की समान संख्या वाले सबस्ट्रिंग्स की संख्या हैं:3
स्पष्टीकरण - सबस्ट्रिंग होंगे -
str[0-2]=”120” , str[1-3]=”201”, str[2-4]=”012”
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक मानों की एक स्ट्रिंग लें और एक स्ट्रिंग की लंबाई की गणना करें
-
आगे की प्रक्रिया के लिए डेटा को फ़ंक्शन में पास करें।
-
0, 1 और 2 की समान संख्या वाले सबस्ट्रिंग की संख्या को संग्रहीत करने के लिए एक अस्थायी चर गणना करें।
-
मानचित्र प्रकार का एक चर बनाएं जो जोड़े को दी गई संख्याओं की आवृत्तियों पर मैप कर रहा हो।
-
1 जोड़ी (0,0) पर स्टोर करें और 0 से स्ट्रिंग की लंबाई तक के लिए लूप प्रारंभ करें।
-
लूप के अंदर, IF str[i] =0 की जांच करें, फिर 0 के लिए गिनती बढ़ाएं, ELSE IF str[i] =1 फिर 1 के लिए गिनती बढ़ाएं, ELSE 2 के लिए गिनती बढ़ाएं।
-
0 और 1 से 0 - 1 और 0 और 2 से 0 - 2 सेट करें।
-
ज़ीरो_वन और ज़ीरो_ट्वो की एक जोड़ी बनाएं और काउंट को काउंट + मैप_पेयर ऑफ़ डिफरेंस वैल्यू के रूप में सेट करें, जिसकी गणना जोड़े बनाकर की जाती है।
-
map_pair को 1 से बढ़ाएँ।
-
वापसी की संख्या
-
परिणाम प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; int count_string(string str_1, int length_str1, string str_2, int length_str2){ int count = INT_MAX; int arr_1[26] = { 0 }; int arr_2[26] = { 0 }; for (int i = 0; i < length_str1; i++){ arr_1[str_1[i] - 'a']++; } for (int i = 0; i < length_str2; i++){ arr_2[str_2[i] - 'a']++; } int alphabets = 26; for (int i = 0; i < alphabets; i++){ if(arr_2[i]){ count = min(count, arr_1[i] / arr_2[i]); } } return count; } int main(){ string str_1 = "knowledge", str_2 = "know"; int length_str1 = str_1.size(); int length_str2 = str_2.size(); cout<<"Count occurrences of a string that can be constructed from another given string are: "<<count_string(str_1,length_str1, str_2, length_str2); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of Substrings with equal number of 0s, 1s and 2s are: 1