কম্পিউটার

C++ এ অক্ষর অদলবদল এবং অপসারণের পর সুষম স্ট্রিং-এর সর্বোচ্চ দৈর্ঘ্য


আমাদেরকে শুধুমাত্র (,),{,},[,] অক্ষর সম্বলিত একটি স্ট্রিং দেওয়া হয়েছে। লক্ষ্য হল এই ধরনের স্ট্রিংটির সর্বাধিক দৈর্ঘ্য খুঁজে বের করা যাতে এটি সংলগ্ন অক্ষরগুলিকে অদলবদল করে বা অক্ষর সরিয়ে দিয়ে ভারসাম্যপূর্ণ হয়। আমরা সন্নিহিত অক্ষরগুলির তুলনা করে এটি করব, যদি তারা একে অপরের বিপরীত হয় তবে সেগুলি অদলবদল করা যেতে পারে। ( }{,)(,][ অদলবদল করা যায়, যখন {{,)),[[,}},)),]] অদলবদল করা যায় না)।

এছাড়াও যদি একটি অক্ষর কোন মিলিত জোড়া না থাকে, তাহলে এটি অপসারণ করা যেতে পারে. ( “{{}][“, এখানে প্রথমে { সরানো যেতে পারে এবং সুষম স্ট্রিং দৈর্ঘ্য 4 হয়ে যায়)

ইনপুট

str[]= “ {{{}}{]]][()” length 12

আউটপুট

Maximum length of balances string: 8

ব্যাখ্যা − str[0] এবং str[1] অদলবদল করা যাবে না, str[0]=“{{}}{]]][()” মূল str[1] এবং str[2] অদলবদল করা যাবে না, str[কে সরান 1]=“{}}{]]][()” {} ভারসাম্যপূর্ণ }{ অদলবদল করা যেতে পারে, পরবর্তী 2 ]], অদলবদল ][ এবং () ভারসাম্যপূর্ণ চূড়ান্ত স্ট্রিং হল {}{}[]( ) দৈর্ঘ্য 8.

ইনপুট

str[]= “(((((()” length 7

আউটপুট

str[]= “(((((()” length 7

ব্যাখ্যা − শুধুমাত্র str[5] এবং str[6] ভারসাম্যপূর্ণ, সবগুলো সরিয়ে দিন। চূড়ান্ত স্ট্রিং ()। দৈর্ঘ্য হল 2

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

  • ক্যারেক্টার অ্যারে str[] মূল স্ট্রিং সংরক্ষণ করে। পূর্ণসংখ্যার দৈর্ঘ্য স্ট্রিংটির দৈর্ঘ্য সংরক্ষণ করে।

  • ফাংশন maxBalancedStr (char str[], int len) স্ট্রিং এবং এর দৈর্ঘ্য অ্যাসপ্যারামিটার নেয় এবং সুষম স্ট্রিং এর সর্বোচ্চ দৈর্ঘ্য প্রদান করে।

  • পরিবর্তনশীল গণনা এই ধরনের স্ট্রিংয়ের দৈর্ঘ্য সংরক্ষণ করতে ব্যবহৃত হয়, প্রাথমিকভাবে 0।

  • প্রথম অক্ষর থেকে স্ট্রিংটি অতিক্রম করা শুরু করুন এবং উভয়কে ভারসাম্যপূর্ণ করতে সন্নিহিত অক্ষর পরিবর্তন করা যায় কিনা তা পরীক্ষা করুন। অথবা যদি তারা ইতিমধ্যে ভারসাম্যপূর্ণ হয়, তাহলে গণনা 2 দ্বারা বৃদ্ধি করুন।

  • পরবর্তী অক্ষরে যাওয়ার জন্য, (),)( এবং {},}{ এবং [],][, ইনক্রিমেন্ট i এছাড়াও যদি এই ধরনের জোড়া বিদ্যমান থাকে তাহলে জোড়ার জন্য এটি করুন।

  • শেষ পর্যন্ত গণনা সুষম স্ট্রিংটির দৈর্ঘ্য সংরক্ষণ করে।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Function to return the length of
// the longest balanced sub-string
int maxBalancedStr(char str[20], int len){
   int count=0;
   // Traversing the string
   for (int i = 0; i <len;i++) {
      // Check type of parentheses and
      // incrementing count for it
      if((str[i]=='(' && str[i+1]==')') || (str[i]==')' && str[i+1]=='(')) //can swap{
         count+=2; ++i; }
      else if((str[i]=='{' && str[i+1]=='}') || (str[i]=='}' && str[i+1]=='{')) //can swap{
         count+=2; ++i; }
      else if((str[i]=='[' && str[i+1]==']') || (str[i]==']' && str[i+1]=='[')) //can swap          count+=2; ++i; }
   }
   return count;
}
// Driven code
int main(){
   char str[] = ")([]]((";
   int length=7;
   cout << maxBalancedStr(str,length);
   return 0;
}

আউটপুট

4

  1. C++ এ 0 এবং 1 এর সেগমেন্টের সর্বোচ্চ দৈর্ঘ্য

  2. C++ তে অক্ষর এবং তাদের ফ্রিকোয়েন্সি প্রিন্ট করুন

  3. C++ এ getline (স্ট্রিং)

  4. স্ট্রিং এর প্রথম এবং শেষ অক্ষর সমান কিনা তা পরীক্ষা করার জন্য C++ প্রোগ্রাম