हमें एक स्ट्रिंग str दी गई है जिसमें केवल 0's, 1's, और 2's हैं। लक्ष्य str के उन सभी सबस्ट्रिंग को ढूंढना है जिनमें 0's, 1's, और 2's की समान संख्या हो। यदि str "12012" है। समान 0's, 1's, और 2's वाले सबस्ट्रिंग होंगे "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's, 1's, और 2's की समान संख्या वाले सबस्ट्रिंग की गिनती संग्रहीत करने के लिए एक अस्थायी चर
countलें। - एक
mapप्रकार का चर बनाएं जो जोड़ी को दी गई संख्याओं की आवृत्तियों से मैप करता है। - पेयर (0,0) पर 1 संग्रहीत करें और स्ट्रिंग की लंबाई तक 0 से FOR लूप शुरू करें।
- लूप के अंदर, जांचें यदि
str[i] == '0'तो 0's की गिनती बढ़ाएँ, अन्यथा यदिstr[i] == '1'तो 1's की गिनती बढ़ाएँ, अन्यथा 2's की गिनती बढ़ाएँ। - 0's और 1's को 0's - 1's पर सेट करें और 0's और 2's को 0's - 2's पर सेट करें।
- zero_one और zero_two की एक जोड़ी बनाएं और काउंट को
count + map_pairके रूप में सेट करें जो जोड़ी बनाकर गणना किया गया अंतर मान है। - 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