কম্পিউটার

একটি বাইনারি স্ট্রিং C++ এ সর্বত্র একটির পরপর দুটি ঘটনা আছে কিনা তা পরীক্ষা করুন


এখানে আমরা আরেকটি আকর্ষণীয় সমস্যা দেখতে পাব। আমাদের একটি কোড লিখতে হবে যা একটি স্ট্রিং গ্রহণ করে, যার নিম্নলিখিত মানদণ্ড রয়েছে৷

  • পরপর 1s এর প্রতিটি গ্রুপ, অবশ্যই 2 এর দৈর্ঘ্য হতে হবে
  • পরপর 1s-এর প্রতিটি গ্রুপ অবশ্যই 1 বা তার বেশি 0s পরে উপস্থিত হবে

ধরুন 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++ এ একটি স্ট্রিং-এ একটি “1(0+)1” প্যাটার্নের ঘটনার সংখ্যা

  2. একটি স্ট্রিং-এ C++-এ K আকারের সমস্ত বাইনারি কোড রয়েছে কিনা তা পরীক্ষা করুন

  3. C++ এ একটি বাইনারি সার্কুলার অ্যারেতে সর্বাধিক পরপর একজনের (বা শূন্য)

  4. C++ এ দুটি বাইনারি স্ট্রিং যোগ করার জন্য প্রোগ্রাম