আমাদের স্ট্রিং স্ট্রিং দেওয়া হয়েছে যাতে শুধুমাত্র 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