কম্পিউটার টিউটোরিয়াল

C++-এ বাইনারি সাবস্ট্রিং গণনা (Count Binary Substrings)

একটি স্ট্রিং s দেওয়া আছে। আমাদের এমন সংলগ্ন সাবস্ট্রিং গণনা করতে হবে যাতে ০ এবং ১-এর সংখ্যা সমান থাকে এবং সাবস্ট্রিং-এ সব ০ এবং সব ১ folyamত থাকে। একই সাবস্ট্রিং একাধিকবার আসলে একাধিকবার গণনা হবে।

ইনপুট "11001100" হলে আউটপুট ৬। সাবস্ট্রিংগুলো: "1100", "10", "0011", "01", "1100", "10"।

সমাধানের ধাপসমূহ

  • cnt অ্যারে (আকার ২) ০ দিয়ে ভরুন
  • res := 0
  • প্রতিটি i ∈ s এর জন্য:
    • num := s[i] - '0'
    • যদি i==0 বা s[i] != s[i-1] হয়, cnt[num] := 0
    • cnt[num]++
    • যদি cnt[num] <= cnt[1-num] হয়, res++
  • res রিটার্ন করুন

উদাহরণ

#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;
    }
};
int main(){
    Solution ob;
    cout << (ob.countBinarySubstrings("11001100"));
}

ইনপুট

"11001100"

আউটপুট

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

  2. C++-এ নির্দিষ্ট উচ্চতার সমতুল্য বাইনারি ট্রি গণনা

  3. সি++-এ বাইনারি স্ট্রিং উইথ সাবস্ট্রিংস রিপ্রেজেন্টিং ১ টু N (Binary String With Substrings Representing 1 To N)

  4. C++-এ সর্টেড বাইনারি অ্যারেতে ১-এর সংখ্যা গণনা (Count 1's in Sorted Binary Array)