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

C++-এ দুটি আপারকেসের মাঝপথে ম্যাক্সিমাম স্বতন্ত্র লোয়ারকেস আলফাবেট


দেওয়া কাজ হচ্ছে একটি স্ট্রিং-এ দুটি আপারকেস আলফাবেটের মাঝপথে সর্বোচ্চ কতগুলো স্বতন্ত্র লোয়ারকেস আলফাবেট আছে তা বের করা।

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

ইনপুট

str = "JKyubDoorG"

আউটপুট

3

ব্যাখ্যা

"yub" দুইটি আপারকেস আলফাবেট K এবং D-এর মাঝপথে আছে যা কাউন্ট ৩ করে।

"oor"ও দুইটি আপারকেস D এবং G-এর মাঝপথে আছে যা কাউন্ট ২ করে কারণ 'o' রিপিট হয়েছে এবং আমরা স্বতন্ত্র আলফাবেট খুঁজছি।

অতএব, আউটপুট ৩।

ইনপুট

str = "ABcefsTaRpaep"

আউটপুট

4

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

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

  • i = 0 থেকে i<size পর্যন্ত লুপ করে চেক করা হয় if (s[i] >= 'A' && s[i] <= 'Z')। যদি সত্য হয় তবে I ইনক্রিমেন্ট এবং ব্রেক।

  • int ans = 0 ইনিশিয়ালাইজ করা হয় চূড়ান্ত উত্তর এবং আরেকটি অ্যারে cnt[26] = {0}।

  • i = 0 থেকে i<size পর্যন্ত লুপ করে চেক করা হয় if (s[i] >= 'A' && s[i] <= 'Z') করেন্ট আলফাবেট আপারকেস কিনা। যদি সত্য হয় তবে int CurrMax = 0 ইনিশিয়ালাইজ করা হয় বর্তমান ম্যাক্সিমাম মান সংরক্ষণের জন্য।

  • i = 0 থেকে i<26 পর্যন্ত লুপ করে চেক করা হয় if (cnt[i] > 0)। যদি সত্য হয় তবে CurrMax ইনক্রিমেন্ট।

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

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

  • ফর লুপ বন্ধ এবং ans রিটার্ন।

উদাহরণ

#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++-এ ট্রিতে দুটি অ-অন্তঃচ্ছেদী পথের সর্বোচ্চ গুণফল (Maximum product of two non-intersecting paths in a tree)

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

  3. C++ তে ৩D তलों के মধ্যকে কোণ বের করা

  4. C++ প্রোগ্রাম: গ্রাফে দুটি নোডের মধ্যে পথ আছে কিনা চেক করা