কম্পিউটার

একটি স্ট্রিংয়ের ঘটনাগুলি গণনা করুন যা C++ এ অন্য প্রদত্ত স্ট্রিং থেকে তৈরি করা যেতে পারে


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

দ্রষ্টব্য − উভয়ের সমস্ত বর্ণমালা একই ক্ষেত্রে।

আসুন উদাহরণ দিয়ে বুঝতে পারি।

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

আউটপুট − একটি স্ট্রিংয়ের ঘটনাগুলি গণনা যা অন্য প্রদত্ত স্ট্রিং থেকে তৈরি করা যেতে পারে:2

ব্যাখ্যা − str_a −

-এ সাবস্ট্রিং bca
str_1[1-3]=”bca” and str[7-9]=”bca”

ইনপুট − str_1 ="সম্পর্কে", str_2 ="cout";

আউটপুট − একটি স্ট্রিংয়ের ঘটনা গণনা যা অন্য প্রদত্ত স্ট্রিং থেকে তৈরি করা যেতে পারে − 0

ব্যাখ্যা − সাবস্ট্রিংগুলি str_a-তে উপস্থিত নয়৷

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

আমরা প্রথমে str_1-এ সমস্ত বর্ণমালার ফ্রিকোয়েন্সি গণনা করব এবং অ্যারে arr_1[26] এ সংরক্ষণ করব এবং অ্যারে arr_2[26]-এ arr_2-এ সমস্ত বর্ণমালার ফ্রিকোয়েন্সি সংরক্ষণ করব।

  • 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 স্ট্রিংগুলির একটি সংখ্যা প্রদান করে যা str_1 থেকে তৈরি করা যেতে পারে।

  • INT_MAX হিসাবে প্রাথমিক গণনা নিন।

  • str_1-এ অক্ষরের ফ্রিকোয়েন্সি arr_1[26] এবং arr_2-এ 0 সহ অক্ষরের ফ্রিকোয়েন্সির জন্য arr_2[26] দুটি অ্যারে শুরু করুন।

  • লুপ এবং আপডেট ফ্রিকোয়েন্সি arr_1 এবং arr_2 ব্যবহার করে str_1 এবং str_2 উভয়ই অতিক্রম করুন।

  • এখন আবার লুপের জন্য arr_2 ব্যবহার করুন এবং বর্তমান ফ্রিকোয়েন্সি arr_2[i] যদি শূন্য না হয় তবে ন্যূনতম গণনা (আগের মান) এবং arr_1[i]/arr_2[i] ( str_2 এর প্রতিটি অক্ষরের জন্য str_1 থেকে প্রতিটি বর্ণমালা শুধুমাত্র একবার গ্রহণ করুন) .

  • শেষ পর্যন্ত, গণনায় str_1 এবং str_2 এর মিলিত সংশ্লিষ্ট অক্ষরের ন্যূনতম মান থাকবে। উদাহরণ aaabbbb (a=3,b=4) এবং abb(a=1,b=2) সর্বনিম্ন গণনা হবে 1

  • পছন্দসই ফলাফল হিসাবে সমস্ত লুপের শেষে গণনা করুন।

উদাহরণ

#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++ এ একটি স্ট্রিং থেকে প্রদত্ত অনুগামী অপসারণের সর্বাধিক সংখ্যা

  2. C++ এ প্রদত্ত পরিসরে থাকা BST উপবৃক্ষগুলি গণনা করুন

  3. C++ এ প্রদত্ত স্ট্রিং-এর সমস্ত সাবস্ট্রিং-এর অনন্য অক্ষর গণনা করুন

  4. C++ এ একটি প্রদত্ত স্ট্রিং-এ সমস্ত প্যালিন্ড্রোমিক অনুসূচী গণনা করুন