Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

बाइनरी स्ट्रिंग में ठीक K '1' वाले उपस्ट्रिंग्स की गणना - C++

समस्या विवरण

हमें एक बाइनरी स्ट्रिंग (0 और 1 का संयोजन) और एक पूर्णांक k दिया गया है। लक्ष्य उन उपस्ट्रिंग्स की गणना करना है जिनमें ठीक k बार '1' आता है।

उदाहरण

इनपुट: str = "10000100000", k = 2

आउटपुट: 6

व्याख्या: ठीक 2 '1' वाले 6 उपस्ट्रिंग्स हैं।

इनपुट: str = "10000100000", k = 3

आउटपुट: 0

व्याख्या: स्ट्रिंग में केवल 2 '1' हैं, इसलिए 3 '1' वाला कोई उपस्ट्रिंग नहीं हो सकता।

दृष्टिकोण

प्रीफिक्स योग और आवृत्ति ऐरे का उपयोग करें। total_1 = अब तक मिले '1' की संख्या। arr_fre[x] = प्रीफिक्स योग x की आवृत्ति। प्रत्येक स्थिति के लिए, यदि total_1 >= k तो arr_fre[total_1 - k] को उत्तर में जोड़ें।

एल्गोरिदम

  1. स्ट्रिंग और k लें
  2. प्रारंभिक count = 0, total_1 = 0
  3. आकार length+1 का ऐरे arr_fre बनाएँ, arr_fre[0] = 1
  4. प्रत्येक अक्षर के लिए:
    • total_1 += (str[i] - '0')
    • यदि total_1 >= k: count += arr_fre[total_1 - k]
    • arr_fre[total_1]++
  5. count लौटाएँ

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

int sub_k_ones(string str, int length, int k) {
    int count = 0;
    int total_1 = 0;
    vector<int> arr_fre(length + 1, 0);
    arr_fre[0] = 1;
    
    for (int i = 0; i < length; i++) {
        total_1 += (str[i] - '0');
        if (total_1 >= k) count += arr_fre[total_1 - k];
        arr_fre[total_1]++;
    }
    return count;
}

int main() {
    string str = "10000100000";
    int length = str.length();
    int k = 2;
    cout << "Count: " << sub_k_ones(str, length, k) << endl;
    return 0;
}

आउटपुट

Count: 6
  1. - C++ में वर्णमाला क्रम में सबस्ट्रिंग की गिनती ढूंढें

    मान लीजिए हमारे पास लंबाई n की एक स्ट्रिंग है। इसमें केवल अपरकेस अक्षर हैं। हमें उन सबस्ट्रिंग की संख्या ढूंढनी है जिनके अक्षर वर्णमाला क्रम में आ रहे हैं। सबस्ट्रिंग का न्यूनतम आकार 2 होगा। तो यदि स्ट्रिंग है: REFJHLMNBV, और सबस्ट्रिंग काउंट 2 है, वे EF और MN हैं। इसे हल करने के लिए, हम इन चरणों

  1. - C++ में बाइनरी सर्च का उपयोग करके स्ट्रिंग खोजना

    स्ट्रिंग में बाइनरी सर्च में, हमें स्ट्रिंग्स का एक सॉर्टेड ऐरे दिया जाता है और हमें बाइनरी सर्च एल्गोरिदम का उपयोग करके स्ट्रिंग्स के ऐरे में एक स्ट्रिंग को खोजना होता है। उदाहरण इनपुट: stringArray = {I, Love, Programming, tutorials, point}. एलिमेंट = programming आउटपुट: स्ट्रिंग इंडेक्स 3 पर मिल

  1. - Python प्रोग्राम - बाइनरी स्ट्रिंग में सभी 1 वाले सबस्ट्रिंग की गिनती

    एक बाइनरी स्ट्रिंग s दी गई है। हमें उन सबस्ट्रिंग की संख्या खोजनी है जिनमें केवल 1 हों। यदि उत्तर बहुत बड़ा है, तो परिणाम को 10^9+7 से मोड करें। उदाहरण इनपुट: s = 100111 आउटपुट: 7 व्याख्या: केवल 1 वाले सबस्ट्रिंग हैं [1, 1, 1, 1, 11, 11, 111]। एल्गोरिदम a := 0 (वर्तमान लगातार 1 की लंबाई) count :=