প্রদত্ত টাস্ক হল একটি স্ট্রিং থেকে প্রদত্ত অনুসৃতির সর্বোচ্চ সংখ্যক অপসারণ খুঁজে বের করা। অ্যাস্ট্রিং s দেওয়া হয়েছে এবং আমাদের সর্বাধিক সংখ্যক অনুগামী 'abc' খুঁজে বের করতে হবে যা স্ট্রিং থেকে সরানো যেতে পারে।
আসুন এখন বুঝি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে:
ইনপুট
s = ‘dnabcxy’
আউটপুট
1
ব্যাখ্যা − প্রদত্ত স্ট্রিং ('dnabcxy') এ 'abc'-এর শুধুমাত্র একটি অনুগামী পাওয়া যাবে, তাই আউটপুট হল 1।
ইনপুট
s = ‘zcabcxabc’
আউটপুট
2 (‘zcabcxabc’)
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
Max() ফাংশনে ভেরিয়েবল শুরু করে i, a, ab, abc এর মান =0 এবং টাইপের int সহ।
-
i=0 থেকে I
পর্যন্ত লুপ করুন -
লুপের ভিতরে চেক করুন যদি (s[i] =='a'), যদি তাই হয় তাহলে a এর মান বৃদ্ধি করুন।
-
অন্যথায়, (s[i] ==‘b’), যদি সত্য হয় তাহলে আবার পরীক্ষা করুন যদি (a> 0)। যদি উভয় শর্তই সত্য হয় তাহলে a এর মান 1 দ্বারা কমান এবং ab এর মান বৃদ্ধি করুন।
-
সবশেষে, (s[i] ==‘c’), যদি সত্য হয় তাহলে আবার পরীক্ষা করুন (ab> 0) কিনা। যদি উভয় শর্তই সত্য হয় তাহলে ab-এর মান 1 দ্বারা হ্রাস করুন এবং abc-এর মান বৃদ্ধি করুন।
-
abc ফেরত দিন
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int Max(string s){
int i=0, a=0, ab=0, abc=0;
for (i = 0; i < s.length(); i++){
if (s[i] == 'a'){
a++;
}
else if (s[i] == 'b'){
if (a > 0){
a--;
ab++;
}
}
else if (s[i] == 'c'){
if (ab > 0){
ab--;
abc++;
}
}
}
return abc;
}
//main function
int main(){
string s = "zcabcxabc";
cout << Max(s);
return 0;
} আউটপুট
2