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

C++-এ অন্য একটি স্ট্রিং থেকে নির্দিষ্ট স্ট্রিং কতবার তৈরি করা যায় তা গণনা


আমাদের দুটি স্ট্রিং str_1 এবং str_2 ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হলো str_2 এর মত কতগুলো স্ট্রিং str_1-এর অক্ষরগুলো ব্যবহার করে তৈরি করা যায়, যেখানে প্রতিটি অক্ষর শুধু একবার ব্যবহার করা যাবে।

নোট − দুটি স্ট্রিং-এ সব অক্ষার কেস একই।

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

ইনপুট − str_1 = "abcaaaabca", str_2 = "bca"

আউটপুট − অন্য স্ট্রিং থেকে তৈরি হয় এমন স্ট্রিং সংখ্যা: ২

ব্যাখ্যা − str_1-এ "bca" সাবস্ট্রিং: str_1[1-3]="bca" এবং str[7-9]="bca"

ইনপুট − str_1 = "about", str_2 = "cout"

আউটপুট − অন্য স্ট্রিং থেকে তৈরি হয় এমন স্ট্রিং সংখ্যা: ০

ব্যাখ্যা − str_1-এ "cout" নেই।

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

প্রথমে str_1-এর সব অ্যালফাবেটের ফ্রিকোয়েন্সি বের করে arr_1[26]-এ রাখব। str_2-এর ফ্রিকোয়েন্সি arr_2[26]-এ রাখব।

  • দুটি স্ট্রিং str_1, str_2। দৈর্ঘ্য str_1.size(), str_2.size()।
  • count_string(string str_1, int len_str_1, string str_2, int len_str_2) ফাংশন দুটি স্ট্রিং এবং দৈর্ঘ্য নিয়ে str_2 কতবার তৈরি করা যায় সেটা রিটার্ন করে।
  • প্রাথমিক কাউন্ট INT_MAX।
  • দুটি অ্যারে arr_1[26] (str_1-এর ফ্রিকোয়েন্সি) এবং arr_2[26] (str_2-এর ফ্রিকোয়েন্সি) ০ দিয়ে ইনিশিয়ালাইজ।
  • str_1 এবং str_2 ট্রাভার্স করে ফ্রিকোয়েন্সি আপডেট করুন।
  • arr_2 আবার ট্রাভার্স করুন: যদি arr_2[i] নন-জিরো হয়, count = min(count, arr_1[i]/arr_2[i]) (প্রতিটি অক্ষর str_1-এ শুধু একবার ব্যবহার করে str_2-এর অক্ষর পূরণ)।
  • শেষে count-এ মিলে যাওয়া অক্ষরের ন্যূনতম অনুপাত থাকবে। উদাহরণ: aaabbbb (a=3,b=4) এবং abb (a=1,b=2) → মিনিমাম ১।
  • count রিটার্ন করুন।

উদাহরণ

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

int count_string(string str_1, int length_str_1, string str_2, int length_str_2) {
    int count = INT_MAX;
    int arr_1[26] = { 0 };
    int arr_2[26] = { 0 };
    for (int i = 0; i < length_str_1; i++) {
        arr_1[str_1[i] - 'a']++;
    }
    for (int i = 0; i < length_str_2; i++) {
        arr_2[str_2[i] - 'a']++;
    }
    int total_alphabets = 26;
    for (int i = 0; i < total_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_str_1 = str_1.size();
    int length_str_2 = str_2.size();
    cout << "Count occurrences of a string that can be constructed from another given string are: " << count_string(str_1, length_str_1, str_2, length_str_2);
    return 0;
}

আউটপুট

Count occurrences of a string that can be constructed from another given string are: 1
  1. C++-এ স্ট্রিং থেকে দেয়া সাবসিকোয়েন্সের ম্যাক্সিমাম রিমUভাল সংখ্যা

  2. C++-এ BST সাবট্রি গণনা যারা দেওয়া রেঞ্জে পড়ে

  3. C++-এ একটি স্ট্রিংয়ের সব সাবস্ট্রিং-এর יূনিক ক্যারেক্টার গণনা

  4. C++-এ দিয়ে স্ট্রিংয়ে সব প্যালিনড্রোমিক সাবসিকোয়েন্স গণনা