কম্পিউটার

C++ এ বাইনারি সাবস্ট্রিং গণনা করুন


ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদেরকে 0 এবং 1 এর সমান সংখ্যক সংলগ্ন সাবস্ট্রিংগুলির গণনা খুঁজে বের করতে হবে এবং এই সাবস্ট্রিংগুলির সমস্ত 0 এবং সমস্ত 1 পরপর গ্রুপ করা হয়েছে। সাবস্ট্রিং একাধিকবার ঘটলে সেগুলি যতবার ঘটবে তার সংখ্যা গণনা করা হয়।

সুতরাং, যদি ইনপুটটি "11001100" এর মত হয়, তাহলে আউটপুট হবে 6, সাবস্ট্রিংগুলি যেমন "1100", "10","0011", "01", "1100", "10"।

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

  • 2 আকারের একটি অ্যারে cnt সংজ্ঞায়িত করুন এবং এটি 0 দিয়ে পূরণ করুন
  • res :=0
  • আরম্ভ করার জন্য i :=0, যখন i
  • সংখ্যা :=s[i] - '0' এর ASCII
  • যদি i 0 এর সমান হয় বা s[i] s[i - 1] এর সমান না হয়, তাহলে −
    • cnt[num] :=0
  • (cnt[num] 1 দ্বারা বাড়ান)
  • যদি cnt[num] <=cnt[1 - num] হয়, তাহলে −
    • (1 দ্বারা রেজুলেশন বাড়ান)
  • রিটার্ন রিটার্ন
  • আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    উদাহরণ

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
    public:
       int countBinarySubstrings(string s) {
          int cnt[2] = { 0 };
          int res = 0;
          for (int i = 0; i < s.length(); ++i) {
             int num = s[i] - '0';
             if (i == 0 || s[i] != s[i - 1])
                cnt[num] = 0;
             ++cnt[num];
             if (cnt[num] <= cnt[1 - num])
                ++res;
          }
          return res;
       }
    };
    main(){
       Solution ob;
       cout << (ob.countBinarySubstrings("11001100"));
    }

    ইনপুট

    "11001100"

    আউটপুট

    6

    1. C++ এ বাইনারি ট্রিতে ভালো নোড গণনা করুন

    2. C++ এ h উচ্চতার সুষম বাইনারি গাছ গণনা করুন

    3. C++ এ 1 থেকে N প্রতিনিধিত্বকারী সাবস্ট্রিং সহ বাইনারি স্ট্রিং

    4. C++ এ সাজানো বাইনারি অ্যারেতে 1 এর সংখ্যা গণনা করুন