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

जांचें कि क्या बाइनरी स्ट्रिंग में सी ++ में हर जगह लगातार दो घटनाएं होती हैं

यहां हम एक और दिलचस्प समस्या देखेंगे। हमें एक कोड लिखना है जो एक स्ट्रिंग को स्वीकार करता है, जिसमें निम्नलिखित मानदंड हैं।

  • लगातार 1s के प्रत्येक समूह की लंबाई 2 होनी चाहिए
  • लगातार 1 के प्रत्येक समूह को 1 या अधिक 0 के बाद प्रकट होना चाहिए

मान लीजिए 0110 की तरह एक स्ट्रिंग है, यह मान्य स्ट्रिंग है, चाहे 001110, 010 मान्य नहीं हैं

यहाँ दृष्टिकोण सरल है। हमें 1 की घटनाओं का पता लगाना है और जांचना है कि यह उप-स्ट्रिंग 011 का हिस्सा है या नहीं। अगर कंडीशन फेल हो जाती है, तो किसी भी सबस्ट्रिंग के लिए झूठी वापसी करें, अन्यथा सही।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
bool isValidStr(string str) {
   int n = str.length();
   int index = find(str.begin(), str.end(), '1') - str.begin();
   if (index == 0) //when the string starts with 1, then return false
   return false;
   while (index <= n - 1) {
      if (str[index - 1] != '0') // If 1 doesn't appear after an 0
         return false;
      if (index + 1 < n && str[index + 1] != '1') // If '1' is not succeeded by another '1'
         return false;
      if (index + 2 < n && str[index + 2] == '1') // If sub-string is of the type "0111"
         return false;
      if (index == n - 1) // If str ends with a single 1
         return false;
      index = find(str.begin() + index + 2, str.end(), '1') - str.begin();
   }
   return true;
}
int main() {
   string str = "011000110110";
   if(isValidStr(str)){
      cout << str << " is a valid string";
   } else {
      cout << str << " is NOT a valid string";
   }
}

आउटपुट

011000110110 is a valid string

  1. जाँच करें कि क्या एक स्ट्रिंग में C++ में आकार K के सभी बाइनरी कोड हैं

    मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग s और एक पूर्णांक k है। हमें यह जांचना है कि लंबाई k का प्रत्येक बाइनरी कोड s का विकल्प है या नहीं। अन्यथा, झूठी वापसी करें। इसलिए, यदि इनपुट S =00110110, k =2 जैसा है, तो आउटपुट सत्य होगा। लंबाई 2 के बाइनरी कोड 00, 01, 10 और 11 हैं। ये क्रमशः 0, 1, 3 और 2 स

  1. C++ . में बाइनरी सर्कुलर ऐरे में अधिकतम क्रमागत (या शून्य)

    हमें एक गोलाकार सरणी के साथ दिया गया है। वृत्ताकार सरणी वह सरणी है जिसके लिए हम इस मामले पर विचार करते हैं कि पहला तत्व अंतिम तत्व के बगल में आता है। इसका उपयोग कतारों को लागू करने के लिए किया जाता है। इसलिए हमें अधिकतम संख्या गिननी होगी। उस सरणी में लगातार 1 या 0 का। आइए उदाहरणों से समझते हैं। इन

  1. C++ में दो बाइनरी स्ट्रिंग्स जोड़ने का प्रोग्राम

    बाइनरी नंबर के साथ दो स्ट्रिंग्स को देखते हुए, हमें उन दो बाइनरी स्ट्रिंग्स को जोड़कर प्राप्त परिणाम को खोजना होगा और परिणाम को बाइनरी स्ट्रिंग के रूप में वापस करना होगा। बाइनरी नंबर वे नंबर होते हैं जिन्हें या तो 0 या 1 के रूप में व्यक्त किया जाता है। 2 बाइनरी नंबर जोड़ते समय बाइनरी जोड़ नियम होता