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

C++-এ ০, ১, ২ সমান সংখ্যা বিশিষ্ট সাবস্ট্রিং গণনা


আমাদের একটি স্ট্রিং str দেওয়া আছে যাতে শুধু ০, ১, ২ রয়েছে। লক্ষ্য হলো str-এর সব সাবস্ট্রিং যাতে ০, ১, ২-এর সংখ্যা সমান, তাদের বের করা। যদি str = "12012" হয়, সাবস্ট্রিং: "120", "201", "012"। মোট ৩টি।

উদাহরণ দিয়ে বুঝি

ইনপুট − str="112200120"

আউটপুট − ০, ১, ২ সমান সংখ্যা বিশিষ্ট সাবস্ট্রিং: ৫

ব্যাখ্যা − সাবস্ট্রিং:

str[0-5]="112200", str[1-6]="122001", str[5-7]="012", str[6-8]="120", str[7-0]="201"

ইনপুট − str="12012"

আউটপুট − ০, ১, ২ সমান সংখ্যা বিশিষ্ট সাবস্ট্রিং: ৩

ব্যাখ্যা − সাবস্ট্রিং:

str[0-2]="120", str[1-3]="201", str[2-4]="012"

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • স্ট্রিং নিন এবং দৈর্ঘ্য বের করুন। ফাংশনে পাস করুন।
  • অস্থায়ী ভেরিয়েবল count সাবস্ট্রিং কাউন্ট রাখতে।
  • map টাইপ ভেরিয়েবল নিন যা পেয়ারকে ফ্রিকোয়েন্সি ম্যাপ করবে।
  • (0,0) পেয়ারে ১ স্টোর করুন এবং i=0 থেকে length পর্যন্ত লুপ চালান।
  • লুপের ভিতরে: str[i]=='0' হলে ০-র কাউন্ট বাড়ান, '1' হলে ১-র, অন্যথায় ২-র।
  • zero_one = zero - one এবং zero_two = zero - two সেট করুন।
  • (zero_one, zero_two) পেয়ার বানিয়ে count += map[pair] করুন।
  • ম্যাপে পেয়ারের ফ্রিকোয়েন্সি ১ বাড়ান।
  • count রিটার্ন করুন।
  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int count_string(string str_1, int length_str1, string str_2, int length_str2) {
    int count = INT_MAX;
    int arr_1[26] = { 0 };
    int arr_2[26] = { 0 };
    for (int i = 0; i < length_str1; i++) {
        arr_1[str_1[i] - 'a']++;
    }
    for (int i = 0; i < length_str2; i++) {
        arr_2[str_2[i] - 'a']++;
    }
    int alphabets = 26;
    for (int i = 0; i < alphabets; i++) {
        if (arr_2[i]) {
            count = min(count, arr_1[i] / arr_2[i]);
        }
    }
    return count;
}

int main() {
    string str_1 = "knowledge", str_2 = "know";
    int length_str1 = str_1.size();
    int length_str2 = str_2.size();
    cout << "Count occurrences of a string that can be constructed from another given string are: " << count_string(str_1, length_str1, str_2, length_str2);
    return 0;
}

আউটপুট

Count of Substrings with equal number of 0s, 1s and 2s are: 1
  1. সি++-এ জোড় ও বিজোড় যোগফল বালা অর্ডার্ড পেয়ার গণনা

  2. সি++-এ জোড় ও বিজোড় গুণফল বালা অর্ডার্ড পেয়ার গণনা

  3. সি++-এ দিয়ে গুণফল সমান ট্রিপলেট গণনা (ডুপ্লিকেট অনুমোদিত)

  4. C++-এ বিটওয়াইজ AND শূন্য হয় এমন ট্রিপলেটের সংখ্যা