কম্পিউটার

C++ এ দুটি বড় হাতের মধ্যে সর্বাধিক স্বতন্ত্র ছোট হাতের বর্ণমালা


প্রদত্ত কাজটি হল প্রদত্ত স্ট্রিংটিতে দুটি বড় হাতের বর্ণমালার মধ্যে থাকা স্বতন্ত্র ছোট হাতের বর্ণমালার সর্বাধিক সংখ্যা খুঁজে বের করা৷

আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −

ইনপুট

str = “JKyubDoorG”

আউটপুট

3

ব্যাখ্যা

"yub" দুটি বড় হাতের বর্ণমালা K এবং D এর মধ্যে উপস্থিত যা গণনা 3 করে।

"oor" দুটি বড় হাতের বর্ণমালা D এবং G এর মধ্যেও উপস্থিত রয়েছে যা গণনা 2কে 'o' একটি পুনরাবৃত্তিকারী বর্ণমালা হিসাবে তৈরি করে এবং আমরা স্বতন্ত্র বর্ণমালা খুঁজছি।

অতএব, আউটপুট হল 3।

ইনপুট

str = “ABcefsTaRpaep”

আউটপুট

4

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

  • ফাংশনে Max() ইনিশিয়ালাইজ int size =s.length() প্রদত্ত স্ট্রিংটির দৈর্ঘ্য সংরক্ষণ করতে।

  • i =0 থেকে i='A' &&s[i] <='Z')। যদি তাই হয় তাহলে I বৃদ্ধি করুন এবং বিরতি;

  • int উত্তর শুরু করুন =0 চূড়ান্ত উত্তর সংরক্ষণ করতে এবং আরেকটি অ্যারে cnt[26] ={0}.

  • i =0 থেকে i='A' &&s[i] <='Z') বর্তমান বর্ণমালা বড় আকারে আছে কিনা তা পরীক্ষা করুন। যদি তাই হয় তাহলে int CurrMax আরম্ভ করুন =0 বর্তমান সর্বোচ্চ মান সংরক্ষণ করতে।

  • i =0 থেকে i<26 পর্যন্ত লুপ করুন এবং পরীক্ষা করুন যদি (cnt[i]> 0)। যদি তাই হয়, তাহলে CurrMax বৃদ্ধি করুন।

  • লুপের বাইরে, উত্তর আপডেট করুন ans =max(ans, CurrMax) বসিয়ে; এবং memset(cnt, 0, sizeof(cnt)) ব্যবহার করে cnt[] অ্যারে রিসেট করুন;

  • উপরের if() স্টেটমেন্ট বন্ধ করুন এবং চেক করুন যদি (s[i]>='a' &&s[i] <='z')। যদি তাই হয় তাহলে cnt[s[i] - 'a'] বৃদ্ধি করুন।

  • জন্য লুপ বন্ধ করুন এবং উত্তর দিন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int Max(string s){
   int size = s.length();
   // Ignore the lowercase alphabets in beginning
   for (int i = 0; i < size; i++){
      if (s[i] >= 'A' && s[i] <= 'Z'){
         i++;
         break;
      }
   }
   int ans = 0;
   int cnt[26] = { 0 };
   for (int i = 0; i < size; i++) {
      // If alphabet is uppercase,
      if (s[i] >= 'A' && s[i] <= 'Z'){
         //Counting all lower case
         //distinct alphabets
         int CurrMax = 0;
         for (int i = 0; i < 26; i++){
            if (cnt[i] > 0)
               CurrMax++;
         }
         // Update ans
         ans = max(ans, CurrMax);
         // Reset count array
         memset(cnt, 0, sizeof(cnt));
      }
      // If alphabet is lowercase
      if (s[i] >= 'a' && s[i] <= 'z')
         cnt[s[i] - 'a']++;
   }
   return ans;
}
// Driver function
int main(){
   string str = "JKyubDoorG";
   cout << Max(str);
   return 0;
}

আউটপুট

3

  1. C++-এ একটি গাছে দুটি অ-ছেদহীন পথের সর্বাধিক গুণফল

  2. C++-এ BST-এর দুটি নোডের মধ্যে সর্বাধিক উপাদান

  3. C++ এ 3D তে দুটি প্লেনের মধ্যে কোণ?

  4. একটি গ্রাফে দুটি নোডের মধ্যে পথ খোঁজার জন্য C++ প্রোগ্রাম