কম্পিউটার

C++ এ সমান সংখ্যক 0s, 1s এবং 2s সহ সাবস্ট্রিং গণনা করুন


আমাদের স্ট্রিং স্ট্রিং দেওয়া হয়েছে যাতে শুধুমাত্র 0, 1 এবং 2 রয়েছে। লক্ষ্য হল str এর সমস্ত সাবস্ট্রিং খুঁজে বের করা যার সংখ্যা 0 এর 1 এবং 2 এর সমান। যদি str "12012" হয়। 0, 1 এবং 2 এর সমান সাবস্ট্রিং হবে "120", "201" এবং "012"। গণনা হবে 3।

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

ইনপুট − str=”112200120”

আউটপুট −0s, 1s, এবং 2s এর সমান সংখ্যক সহ সাবস্ট্রিং এর সংখ্যা হল −5

ব্যাখ্যা − সাবস্ট্রিং হবে

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

ইনপুট − str=”12012”

আউটপুট −0s, 1s, এবং 2s এর সমান সংখ্যা সহ সাবস্ট্রিংগুলির সংখ্যা হল:3

ব্যাখ্যা − সাবস্ট্রিং হবে −

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

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

  • পূর্ণসংখ্যার মানগুলির একটি স্ট্রিং নিন এবং একটি স্ট্রিংয়ের দৈর্ঘ্য গণনা করুন

  • আরও প্রক্রিয়াকরণের জন্য ফাংশনে ডেটা পাস করুন।

  • 0, 1 এবং 2 এর সমান সংখ্যা সহ সাবস্ট্রিংগুলির গণনা সংরক্ষণ করতে একটি অস্থায়ী পরিবর্তনশীল গণনা নিন৷

  • টাইপ ম্যাপের একটি ভেরিয়েবল তৈরি করুন যা প্রদত্ত সংখ্যার ফ্রিকোয়েন্সিতে জোড়াকে ম্যাপ করছে।

  • 1 জোড়ায় (0,0) সংরক্ষণ করুন এবং একটি স্ট্রিংয়ের দৈর্ঘ্য পর্যন্ত 0 থেকে FOR লুপ শুরু করুন৷

  • লুপের ভিতরে, IF str[i] =0 চেক করুন তারপর 0 এর জন্য গণনা বৃদ্ধি করুন, ELSE IF str[i] =1 তারপর 1 এর জন্য গণনা বৃদ্ধি করুন, অন্যথায় 2 এর জন্য গণনা বৃদ্ধি করুন।

  • 0's এবং 1's 0's - 1's এবং 0's এবং 2's to 0's - 2's সেট করুন।

  • zero_one এবং zero_two এর একটি জোড়া তৈরি করুন এবং গণনাটিকে গণনা হিসাবে সেট করুন + পার্থক্য মানের মানচিত্র_জোড়া যা জোড়া তৈরি করে গণনা করা হয়।

  • ম্যাপ_পেয়ারটিকে 1 দ্বারা বৃদ্ধি করুন।

  • রিটার্ন গণনা

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#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. C++ এ জোড় এবং বিজোড় সমষ্টি সহ অর্ডার করা জোড়ার সংখ্যা গণনা করুন

  2. C++ এ জোড় এবং বিজোড় পণ্য সহ অর্ডার করা জোড়ার সংখ্যা গণনা করুন

  3. C++ এ অনুমোদিত অনুলিপি সহ প্রদত্ত সংখ্যার সমান পণ্য সহ ট্রিপলেটের সংখ্যা গণনা করুন

  4. C++-এ Bitwise এবং Equal to Zero সহ তিনগুণ