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

C-তে স্ট্রিং-এ একই অক্ষরের দুটি ঘটনার মধ্যে সর্বোচ্চ অক্ষর সংখ্যা নির্ণয়

একটি অক্ষরের স্ট্রিং দেওয়া আছে। স্ট্রিং-এ কমপক্ষে একটি অক্ষর দুবার রয়েছে। কাজটি হলো যেকোনো একই অক্ষরের দুটি ঘটনার মাঝপথে সর্বোচ্চ কতটি অক্ষর আছে তা খুঁজে বের করা। কোনো পুনরাবৃত্তি না থাকলে -1 রিটার্ন করবে।

উদাহরণ

ইনপুট: str = "abcdba"

আউটপুট: একই অক্ষরের দুটি ঘটনার মধ্যে সর্বোচ্চ অক্ষর সংখ্যা - 4

ব্যাখ্যা: পুনরাবৃত্তি অক্ষর 'a' এবং 'b':

১. 'a': প্রথম ইনডেক্স ০, শেষ ৫ → মাঝপথে অক্ষর = ৫-০-১ = ৪
২. 'b': প্রথম ইনডেক্স ১, শেষ ৪ → মাঝপথে অক্ষর = ৪-১-১ = ২
সর্বোচ্চ = ৪

ইনপুট: str = "AbcAaBcbC"

আউটপুট: ৫

ব্যাখ্যা: পুনরাবৃত্তি অক্ষর 'A', 'b', 'c':

১. 'A': ইনডেক্স ০ এবং ৩ → ৩-০-১ = ২
২. 'b': ইনডেক্স ১ এবং ৭ → ৭-১-১ = ৫
৩. 'c': ইনডেক্স ২ এবং ৬ → ৬-২-১ = ৩
সর্বোচ্চ = ৫

নোট: "abcdefg" এর মতো কোনো পুনরাবৃত্তি না থাকলে -1 রিটার্ন হবে।

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

  • ক্যারেক্টার অ্যারে Str[] নেওয়া হয়েছে।
  • maxChars(char str[], int n) ফাংশনটি সর্বোচ্চ অক্ষর সংখ্যা গণনা করে।
  • maxC = -1 দিয়ে ইনিশিয়ালাইজ।
  • দুটি নেস্টেড লুপ দিয়ে সব জোড়া (i, j) চেক করা হয়।
  • যদি str[i] == str[j] হয়, তবে মাঝপথের অক্ষর সংখ্যা = j - i - 1।
  • এই মান maxC-এय़ বড় হলে maxC আপডেট করা হয়।
  • শেষে maxC রিটার্ন করা হয়।

C প্রোগ্রাম উদাহরণ

#include <stdio.h>
#include <math.h>

int maxChars(char str[], int n) {
    int maxC = -1;
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (str[i] == str[j]) {
                int temp = abs(j - i - 1);
                maxC = maxC > temp ? maxC : temp;
            }
    return maxC;
}

int main() {
    char Str[] = "AbcAaBcbC";
    printf("একই অক্ষরের দুটি ঘটনার মধ্যে সর্বোচ্চ অক্ষর সংখ্যা: %d", maxChars(Str, 9));
    return 0;
}

আউটপুট

একই অক্ষরের দুটি ঘটনার মধ্যে সর্বোচ্চ অক্ষর সংখ্যা: 5
  1. C++-এ BST-এ দুটি নোডের মধ্যে সর্বোচ্চ উপাদান

  2. দুটি পূর্ণসংখ্যার মাঝপথে আর্মস্ট্রอง সংখ্যা (Armstrong Numbers)

  3. C++ স্ট্রিং কনস্ট্যান্ট এবং ক্যারেক্টার কনস্ট্যান্টের পার্থক্য

  4. C#-এ স্ট্রিং-এ অক্ষর/application Character frequency counting