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

C++-এ দেয়া K দৈর্ঘ্যের সমান ক্যারেক্টার والي সাবস্ট্রিং-এর ম্যাক্সিমাম কাউন্ট


দেওয়া কাজ হচ্ছে দৈর্ঘ্য K-এর সমান ক্যারেক্টার वाले সাবস্ট্রিং-এর ম্যাক্সিমাম কাউন্ট বের করা। একটি স্ট্রিং s এবং আরেকটি পূর্ণসংখ্যা K দেওয়া আছে, আমাদেরকে আকার K-এর সাব-স্ট্রিং যা একই ক্যারেক্টার ধারণ করে তাদের ঘটনা গণনা করতে হবে।

পাওয়া সাব-স্ট্রিংগুলোর মধ্যে যেটি সর্বোচ্চবার আসেছে সেটি বেছে নিতে হবে।

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

ইনপুট

s = "tuuxyyuuc", K = 2

আউটপুট

2

ব্যাখ্যা

এখানে দৈর্ঘ্য ২ এবং একই ক্যারেক্টার والے সাব-স্ট্রিংগুলো হচ্ছে: "uu" এবং "yy" কিন্তু দেখা যায় "yy" শুধু ১বার আসেছে আর "uu" ২বার আছে। তাই আউটপুট হয় ২।

ইনপুট

s = "hhigggff", K = 3

আউটপুট

1

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

  • Max() ফাংশনে, int ans = 0 ইনিশিয়ালাইজ করা হয় চূড়ান্ত উত্তর, size = str.size() স্ট্রিং-এর আকার এবং char c ডিক্লেয়ার করা হয় যেটি চেক করার ক্যারেক্টার সংরক্ষণ করবে।

  • j = 0 থেকে j < 26 পর্যন্ত লুপ করে c = 'a' + j সেট করা হয় কারণ আমরা প্রতিটি ক্যারেক্টার চেক করব।

  • ভেরিয়েবল int CurrCh = 0 ইনিশিয়ালাইজ করা হয় বর্তমান ক্যারেক্টার ধারণকারী সাব-অ্যারে ঘটনা সংরক্ষণের জন্য।

  • i = 0 থেকে i <= size – K পর্যন্ত লুপ করে চেক করা হয় if (str[i] != c)। যদি সত্য হয় তবে continue; স্টেটমেন্ট।

  • count = 0 ইনিশিয়ালাইজ করা হয় বর্তমান ক্যারেক্টার-এর সাব-অ্যারে দৈর্ঘ্য সংরক্ষণের জন্য।

  • while লুপ কন্ডিশন (i < size && count != K && str[i] == c) এবং লুপের ভিতরে i এবং count ইনক্রিমেন্ট। while লুপের বাইরে i ১ কমানো হয়।

  • চেক করা হয় if (count == K)। যদি সত্য হয় তবে CurrCh ইনক্রিমেন্ট।

  • দ্বিতীয় ফর লুপ বন্ধ এবং ans আপডেট করা হয় ans = max(ans, CurrCh) দিয়ে।

  • শেষে প্রথম ফর লুপ বন্ধ এবং ans রিটার্ন।

উদাহরণ

#include <bits/stdc++.h> 
using namespace std; 

int Max(string str, int K){ 
    int ans = 0, size = str.size(); 
    char c; 
    //Checking for all characters 
    for (int j = 0; j < 26; j++){ 
        c = 'a' + j; 
        //checking for current character 
        int CurrCh = 0; 
        for (int i = 0; i <= size - K; i++){ 
            if (str[i] != c) 
                continue; 
            //Counting the size of sub-string 
            int count = 0; 
            while (i < size && count != K && str[i] == c){ 
                i++; 
                count++; 
            } 
            i--; 
            //Increment CurrCh if sub-string has length K 
            if (count == K) 
                CurrCh++; 
        } 
        //Update ans 
        ans = max(ans, CurrCh); 
    } 
    return ans; 
} 
//main function 
int main(){ 
    string str = "tuuuxyuuu"; 
    int K = 3; 
    cout << Max(str, K); 
    return 0; 
}

আউটপুট

2

  1. C++ কোড: সর্বাধিক গ্রুপ সংখ্যা বের করা

  2. সি++ কোড: d দিনে প্রথম পাইলে সর্বোচ্চ হে-বেল গণনা করুন

  3. C++ দিয়ে সর্বোচ্চ বেণ্ড (Bends) Barney পথের দৈর্ঘ্য বের করা

  4. C++-এ পেয়ার গুলোর ম্যাক্সিমাম দৈর্ঘ্যের চেইন বের করা