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

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

मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, एक और पूर्णांक k है। हमें यह जांचना होगा कि स्ट्रिंग में k बिट्स के बाइनरी के सभी क्रमपरिवर्तन हैं। मान लीजिए कि एक स्ट्रिंग "11001" की तरह है, और यदि K =2 है, तो इसमें k बिट संख्याओं के सभी क्रमपरिवर्तन होने चाहिए। (00, 01, 10, 11), दिए गए स्ट्रिंग में सभी क्रमपरिवर्तन हैं। तो यह मान्य स्ट्रिंग है।

बाइनरी स्ट्रिंग और k के मान को लेकर, हमें यह जांचना है कि बाइनरी अनुक्रम मेल खाते हैं या नहीं। द्विआधारी अनुक्रम आकार k से बना है। तो विभिन्न बाइनरी क्रमपरिवर्तन की 2k संख्या होगी। हम k लंबाई बाइनरी मान के सभी क्रमपरिवर्तन को एक सूची में स्ट्रिंग के रूप में संग्रहीत करेंगे, फिर सूची में मौजूद सभी तत्वों की तुलना दिए गए स्ट्रिंग के सबसेट के रूप में करेंगे। यदि हम सूची में मौजूद सभी स्ट्रिंग्स के लिए सही हो जाते हैं, तो स्ट्रिंग मान्य है, अन्यथा नहीं।

उदाहरण

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector<string> binaryPermutations(int k){
   vector<string> list;
   int n = 0;
   string bin_str = "";
   for(int i = 0; i<k; i++){
      bin_str += "0";
   }
   int limit = pow(2, k);
   list.push_back(bin_str);
   for(int i=1; i<limit; i++){
      int j = 0;
      while(j <= k){
         if(bin_str[k-1-j] == '0'){
            bin_str[k - 1 - j] = '1';
            break;
         } else {
            bin_str[k - 1 - j] = '0';
            j++;
         }
      }
      list.push_back(bin_str);
   }
   return list;
}
bool hasAllPermutation(string str, int k){
   vector<string> list = binaryPermutations(k);
   for(int i = 0; i<list.size(); i++){
      string substr = list[i];
      std::size_t found = str.find(substr);
      if(found == std::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";
   }
}

आउटपुट

Has All Permutations

  1. C++ में एक बाइनरी ट्री की पूर्णता की जाँच करें

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें यह जांचना है कि ट्री पूर्ण बाइनरी ट्री है या नहीं। स्तर n के एक पूर्ण बाइनरी ट्री में n-1 पूर्ण स्तर होते हैं, और स्तर n पर सभी नोड्स बाईं ओर से भरे जाते हैं। तो अगर इनपुट ट्री जैसा है - तब आउटपुट सही होगा, क्योंकि यह पूर्ण बाइनरी ट्री है। इसे हल

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

    विचार करें कि हमारे पास एक बाइनरी ट्री है। हमें यह पता लगाना है कि पेड़ में आकार 2 या उससे अधिक के कुछ डुप्लिकेट सबट्री हैं या नहीं। मान लीजिए हमारे पास नीचे जैसा एक बाइनरी ट्री है - आकार 2 के दो समान उपप्रकार हैं। हम ट्री क्रमांकन और हैशिंग प्रक्रिया का उपयोग करके इस समस्या को हल कर सकते हैं। वि

  1. सी # प्रोग्राम एक स्ट्रिंग की जांच करने के लिए जिसमें सभी स्वर शामिल हैं

    सभी स्वरों की जाँच करने के लिए, सबसे पहले जाँच करने के लिए शर्त सेट करें - string res = str.Where(chk =< "aeiouAEIOU".Contains(chk)).Distinct(); ऊपर, हमने स्ट्रिंग का उपयोग किया है - string str = "the quick brown fox jumps over the lazy dog"; अब, Any() विधि का उपयोग करके जां