কম্পিউটার

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


ধরুন আমাদের একটি বাইনারি স্ট্রিং s এবং একটি পূর্ণসংখ্যা k আছে। k দৈর্ঘ্যের প্রতিটি বাইনারি কোড s এর সাবস্ট্রিং কিনা তা আমাদের পরীক্ষা করতে হবে। অন্যথায়, মিথ্যা ফেরত দিন।

সুতরাং, যদি ইনপুটটি S ="00110110", k =2 এর মত হয়, তাহলে আউটপুটটি সত্য হবে। দৈর্ঘ্য 2 এর বাইনারি কোড হল "00", "01", "10" এবং "11"। এগুলি যথাক্রমে সূচক 0, 1, 3 এবং 2 এ উপস্থিত।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি সেট v

    সংজ্ঞায়িত করুন
  • temp :=ফাঁকা স্ট্রিং

  • req :=2^k

  • আরম্ভ করার জন্য i :=0, যখন i

    • temp :=temp + s[i]

    • যদি i>=k, তাহলে −

      • টেম্পের প্রথম সূচক থেকে একটি অক্ষর মুছুন

    • যদি i>=k - 1, তাহলে −

      • v

        -এ তাপমাত্রা সন্নিবেশ করান
    • যদি v এর আকার req এর সমান হয়, তাহলে −

      • প্রত্যাবর্তন সত্য

  • মিথ্যা ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
public:
   lli fastPow(lli b, lli p){
      lli ret = 1;
      while (p) {
         if (p & 1) {
            ret *= b;
         }
         b *= b;
         p >>= 1;
      }
      return ret;
   }
   bool hasAllCodes(string s, int k) {
      unordered_set<string> v;
      string temp = "";
      lli req = fastPow(2, k);
      for (lli i = 0; i < s.size(); i++) {
         temp += s[i];
         if (i >= k) {
            temp.erase(0, 1);
         }
         if (i >= k - 1) {
            v.insert(temp);
         }
         if ((lli)v.size() == req)
            return true;
      }
      return false;
   }
};
main(){
   Solution ob;
   cout << (ob.hasAllCodes("00110110",2));
}

ইনপুট

"00110110",2

আউটপুট

1

  1. C++ এ একটি বাইনারি ট্রির সম্পূর্ণতা পরীক্ষা করুন

  2. C++ এ একটি স্ট্রিং বাইনারি অনুসন্ধান করুন

  3. একটি বাইনারি ট্রিতে C++ সাইজের 2 বা তার বেশি ডুপ্লিকেট সাবট্রি রয়েছে কিনা তা পরীক্ষা করুন

  4. পাইথন প্রোগ্রাম একটি স্ট্রিং সব অনন্য অক্ষর আছে কিনা তা পরীক্ষা করতে