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

C++-এ Minimum Remove to Make Valid Parentheses

ধরি আমাদের একটি স্ট্রিং s আছে যা '(', ')' এবং लोয়ারকেস ইংলিশ ক্যারেক্টার দিয়ে গঠিত। আমাদের মিনিমাম সংখ্যক প্যারেনথেসিস ( '(' বা ')', যেকোনো পজিশনে ) রিমুভ করতে হবে যাতে ফলাফল প্যারেনথেসিস স্ট্রিংটি ভ্যালিড হয় এবং যেকোনো একটি ভ্যালিড স্ট্রিং রিটার্ন করতে হবে। একটি প্যারেনথেসিস স্ট্রিং ভ্যালিড হয় যখন নিচের সব ক্রাইটেরিয়া পূরণ হয়:

  • এটি একটি খালি স্ট্রিং, শুধু লোয়ারকেস ক্যারেক্টার ধারণ করে, অথবা

  • এটি AB ফর্মে লেখা যায় (A কনক্যাটেনেটেড উইথ B), যেখানে A এবং B ভ্যালিড স্ট্রিং, অথবা

  • এটি (A) ফর্মে লেখা যায়, যেখানে A একটি ভ্যালিড স্ট্রিং।

ইনপুট যদি "a)b(c)d" হয়, তবে আউটপুট হবে "ab(c)d"

এটি সমাধান করার জন্য নিচের ধাপগুলো অনুসরণ করব:

  • একটি স্ট্যাক st ডিফাইন করুন

  • i = 0 থেকে s.size() - 1 পর্যন্ত লুপ চালান

    • যদি s[i] = '(', তবে i স্টকে পাশ করুন

    • অন্যথায় যখন s[i] = ')', তবে

      • যদি স্ট্যাক খালি না হয়, তবে স্ট্যাক থেকে পপ করুন, অন্যথায় s[i] = '*' সেট করুন

  • যখন পর্যন্ত st খালি নয়,

    • s[st.top()] = '*' সেট করুন

    • স্ট্যাক থেকে পপ করুন

  • ans := খালি স্ট্রিং

  • i = 0 থেকে s.size() - 1 পর্যন্ত লুপ চালান

    • যদি s[i] '*' না হয়, তবে ans := ans + s[i]

  • ans রিটার্ন করুন

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বোঝার জন্য:

উদাহরণ

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

class Solution {
public:
    string minRemoveToMakeValid(string s) {
        stack<int> st;
        for(int i = 0; i < s.size(); i++) {
            if(s[i] == '(') st.push(i);
            else if(s[i] == ')') {
                if(!st.empty()) st.pop();
                else s[i] = '*';
            }
        }
        while(!st.empty()) {
            s[st.top()] = '*';
            st.pop();
        }
        string ans = "";
        for(int i = 0; i < s.size(); i++) {
            if(s[i] != '*') ans += s[i];
        }
        return ans;
    }
};

int main() {
    Solution ob;
    cout << (ob.minRemoveToMakeValid("a)b(c)d"));
}

ইনপুট

"a)b(c)d"

আউটপুট

ab(c)d
  1. C++ প্রোগ্রাম: স্ট্রিং থেকে স্পেস রিমুভ করা

  2. C++-এ স্ট্রিংর ট্রেলিং জিরো রিমুভ করা

  3. পাইথনে সঠিক প্যারেনথেসিস बनाने জন্য ন্যূনতম সরানো প্রয়োজনীয় সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে প্যারেনথেসিস ভ্যালিড করতে মিনিমাম অ্যাড করুন