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

C++-এ স্ট্রিং থেকে ব্যালেন্সড স্ট্রিং बनाने के लिये স্ব্যাপ ও রিমুভাল

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

ইনপুট

str[]= "{{{}}{]]][()" length 12

আউটপুট

Maximum length of balances string: 8

ব্যাখ্যা: প্রথম দুটি { স্ব্যাপ হয় না, রিমুভ। পরের {} ব্যালেন্সড। }{ স্ব্যাপ হয়। ]] রিমুভ। ][ স্ব্যাপ হয়ে [] হয়। () ব্যালেন্সড। ফাইনাল স্ট্রিং: {}{}[]() দৈর্ঘ্য ৮।

ইনপুট

str[]= "(((((()" length 7

আউটপুট

str[]= "(((((()" length 7

ব্যাখ্যা: শুধু str[5] ও str[6] ব্যালেন্সড, বাকি রিমুভ। ফাইনাল স্ট্রিং () দৈর্ঘ্য ২।

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

  • char str[] ও length ইনপুট।
  • maxBalancedStr(char str[], int len) ফাংশন ম্যাক্স ব্যালেন্সড দৈর্ঘ্য রিটার্ন।
  • count = 0। স্ট্রিং ট্র্যাভার্স করলে সংলগ্ন ক্যারেক্টার চেক: (), )(, {}, }{, [], ][ - যেসব ব্যালেন্সড বা স্ব্যাপ করে ব্যালেন্সড হয়, count += 2 এবং i++ (নেক্সট পেয়ার স্কিপ)।
  • শেষে count রিটার্ন।

উদাহরণ কোড

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

int maxBalancedStr(char str[20], int len){
    int count = 0;
    for (int i = 0; i < len; i++) {
        if((str[i]=='(' && str[i+1]==')') || (str[i]==')' && str[i+1]=='(')){
            count += 2; ++i;
        }
        else if((str[i]=='{' && str[i+1]=='}') || (str[i]=='}' && str[i+1]=='{')){
            count += 2; ++i;
        }
        else if((str[i]=='[' && str[i+1]==']') || (str[i]==']' && str[i+1]=='[')){
            count += 2; ++i;
        }
    }
    return count;
}

int main(){
    char str[] = ")([]]((";
    int length = 7;
    cout << maxBalancedStr(str, length);
    return 0;
}

আউটপুট

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

  2. C++-এ স্ট্রিংয়ের ক্যারেক্টর ও তাদের ফ্রিকোয়েন্সি অভ apparition অর্ডারে প্রিন্ট করুন

  3. C++-এ getline (string) ফাংশন

  4. C++ প্রোগ্রাম: স্ট্রিং-এর প্রথম ও শেষ ক্যারেক্টার সমান কিনা যাচাই করা