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

C++ में बाइनरी स्ट्रिंग में लंबाई k के सभी क्रमचय हैं या नहीं जांचें


समस्या विवरण

एक बाइनरी स्ट्रिंग और पूर्णांक k दिया गया है। जांचें कि स्ट्रिंग में k-बिट बाइनरी संख्याओं के सभी 2^k क्रमचय सबस्ट्रिंग के रूप में मौजूद हैं या नहीं।

उदाहरण: str="11001", k=2 → आवश्यक: 00, 01, 10, 11 → सभी मौजूद हैं → YES

एल्गोरिदम

  1. k लंबाई के सभी 2^k बाइनरी क्रमचय उत्पन्न करें
  2. प्रत्येक क्रमचय के लिए जांचें कि वह दिए गए स्ट्रिंग में सबस्ट्रिंग के रूप में है या नहीं
  3. सभी मिल जाएं → true, अन्यथा false

उदाहरण कोड

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

vector binaryPermutations(int k) {
    vector list;
    string binStr(k, '0');
    list.push_back(binStr);
    
    int limit = pow(2, k);
    for (int i = 1; i < limit; i++) {
        int j = 0;
        while (j <= k) {
            if (binStr[k-1-j] == '0') {
                binStr[k-1-j] = '1';
                break;
            } else {
                binStr[k-1-j] = '0';
                j++;
            }
        }
        list.push_back(binStr);
    }
    return list;
}

bool hasAllPermutation(string str, int k) {
    vector list = binaryPermutations(k);
    for (string substr : list) {
        if (str.find(substr) == string::npos)
            return false;
    }
    return true;
}

int main() {
    int k = 2;
    string str = "11001";
    if (hasAllPermutation(str, k))
        cout << "Has All Permutations";
    else
        cout << "Not All Permutations are found";
    return 0;
}

आउटपुट

Has All Permutations
  1. C++ में बाइनरी ट्री की संपूर्णता जांचना C++ में बाइनरी ट्री की संपूर्णता जांचना

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें जांचना है कि क्या यह ट्री एक पूर्ण बाइनरी ट्री (Complete Binary Tree) है या नहीं। लेवल n का एक पूर्ण बाइनरी ट्री में n-1 लेवल पूरी तरह भरे होते हैं, और लेवल n पर सभी नोड्स बाईं ओर से भरे होते हैं। उदाहरण: ट्री [1,2,3,4,5,6] के लिए आउटपुट true (1) होगा, क

  1. C++ में बाइनरी ट्री में आकार 2 या अधिक के डुप्लिकेट सबट्री हैं या नहीं जांचें C++ में बाइनरी ट्री में आकार 2 या अधिक के डुप्लिकेट सबट्री हैं या नहीं जांचें

    समस्या विवरण बाइनरी ट्री में आकार 2 या अधिक के डुप्लिकेट सबट्री हैं या नहीं जांचें। हल: ट्री सीरियलाइजेशन + हैशिंग प्रत्येक सबट्री को स्ट्रिंग के रूप में सीरियलाइज़ करें (नल के लिए $ मार्कर) सीरियलाइज्ड स्ट्रिंग्स को हैश सेट में स्टोर करें यदि कोई नॉन-लीफ सबट्री पहले से सेट में है → डुप्लिकेट मिल

  1. - C# में चेक करना कि स्ट्रिंग में सभी वॉवेल्स हैं या नहीं

    स्ट्रिंग में सभी वॉवेल्स (स्वर) ढूंढना LINQ का उपयोग करके स्ट्रिंग में मौजूद सभी अद्वितीय वॉवेल्स ढूंढें। शर्त सेट करें: aeiouAEIOU.Contains(chk)).Distinct(); टेस्ट स्ट्रिंग: string str = the quick brown fox jumps over the lazy dog; Any() से चेक करें कि कोई वॉवेल है या नहीं: if (!res.Any()) Cons