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

C++-এ স্ট্রিং থেকে দেয়া সাবসিকোয়েন্সের ম্যাক্সিমাম রিমUভাল সংখ্যা


দেওয়া কাজ হচ্ছে একটি স্ট্রিং থেকে দেয়া সাবসিকোয়েন্সের ম্যাক্সিমাম রিমUভাল সংখ্যা বের করা। একটি স্ট্রিং s দেওয়া আছে এবং আমাদেরকে 'abc' সাবসিকোয়েন্স সর্বোচ্চ কতবার রিমUভ করা যায় তা বের করতে হবে।

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

ইনপুট

s = 'dnabcxy'

আউটপুট

1

ব্যাখ্যা − দেয়া স্ট্রিং-এ ('dnabcxy') শুধু একটি 'abc' সাবসিকোয়েন্স পাওয়া যায়, তাই আউটপুট ১।

ইনপুট

s = 'zcabcxabc'

আউটপুট

2 ('zcabcxabc')

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

  • Max() ফাংশনে i, a, ab, abc ভেরিয়েবল ০ দিয়ে ইনিশিয়ালাইজ করা হয় int টাইপে।

  • i=0 থেকে i < s.length() পর্যন্ত লুপ।

  • লুপের ভিতরে চেক করা হয় if (s[i] == 'a')، যদি সত্য হয় তবে a-এর মান ইনক্রিমেন্ট।

  • অন্যথায়, চেক করা হয় if (s[i] == 'b')، যদি সত্য হয় তবে আবার চেক করা হয় if (a > 0)। যদি দুটি শর্ত সত্য হয় তবে a-এর মান ১ কমানো এবং ab-এর মান ইনক্রিমেন্ট।

  • শেষে, চেক করা হয় if (s[i] == 'c')، যদি সত্য হয় তবে আবার চেক করা হয় if (ab > 0)। যদি দুটি শর্ত সত্য হয় তবে ab-এর মান ১ কমানো এবং 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

  1. পথ থেকে ন্যূনতম স্টপ সংখ্যা বের করা (C++)

  2. C++-এ অজানা সংখ্যাগুলোর দেওয়া গুণফল থেকে সর্বোচ্চ GCD

  3. C++-এ স্ট্রিংকে নির্দিষ্ট বার ক্যাটেনেট করা (Concatenate String N Times)

  4. C++ প্রোগ্রাম: স্ট্রিংয়ের পারমুটেশন সংখ্যা বের করা