স্ট্রিং হল ক্যারেক্টরের একটি অ্যারে। এই সমস্যাতিতে আমাদের একটি স্ট্রিং দেওয়া থাকবে যাতে ওপেনিং এবং ক্লোজিং ব্র্যাকেট রয়েছে। আমাদের এই স্ট্রিংটি অতিরিক্ত ব্র্যাকেট সরিয়ে ব্যালেন্স করতে হবে।
উদাহরণ:
Input : ")Tutor)ials(p(oin)t(...)" Output : "Tutorials(p(oin)t(...))"
এটি সমাধান করতে স্ট্রিং ট্রাভার্স করে মিলে যাওয়া ব্র্যাকেট চেক করব। অমিলিত ক্লোজিং ব্র্যাকেটগুলো বাদ দিব।
অ্যালগরিদম
Step 1: স্ট্রিং বাম থেকে ডানে ট্রাভার্স করুন।
Step 2: ওপেনিং ব্র্যাকেট '(' পাওয়া গেলে প্রিন্ট করুন এবং কাউন্ট বাড়ান।
Step 3: ক্লোজিং ব্র্যাকেট ')' পাওয়া গেলে শুধু প্রিন্ট করুন যদি কাউন্ট > 0 হয়, এবং কাউন্ট কমান।
Step 4: ব্র্যাকেট ব্যতীত সকল ক্যারেক্টার প্রিন্ট করুন।
Step 5: শেষে ক্লোজিং ব্র্যাকেট ')' যোগ করে কাউন্ট ০ করুন।
উদাহরণ কোড
#include <iostream>
#include <string.h>
using namespace std;
void balancedbrackets(string str) {
int count = 0, i;
int n = str.length();
for (i = 0; i < n; i++) {
if (str[i] == '(') {
cout << str[i];
count++;
} else if (str[i] == ')' && count != 0) {
cout << str[i];
count--;
} else if (str[i] != ')')
cout << str[i];
}
if (count != 0)
for (i = 0; i < count; i++)
cout << ")";
}
int main() {
string str = ")Tutor)ials(p(oin)t(...)";
cout << "Original string : " << str;
cout << "\nBalanced string : ";
balancedbrackets(str);
return 0;
}
আউটপুট
Original string : )Tutor)ials(p(oin)t(...) Balanced string : Tutorials(p(oin)t(...))