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

C++-এ প্যারেনথিসিস স্কোর গণনা

মান করুন আমাদের একটি बैलেন্সড প্যারেনথিসিস স্ট্রিং S দেওয়া আছে, আমাদের নিচের নিয়ম অনুযায়ী স্ট্রিংর স্কোর গণনা করতে হবে −

  • ()-এর স্কোর 1
  • AB-এর স্কোর A + B, যেখানে A এবং B দুটি बैলেন্সড প্যারেনথিসিস স্ট্রিং
  • (A)-এর স্কোর 2 * A, যেখানে A একটি बैলেন্সড প্যারেনথিসিস স্ট্রিং

যদি ইনপুট হয় "(()(()))", তবে আউটপুট হবে 6।

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

  • ans := 0, একটি স্ট্যাক st সংজ্ঞায়িত করুন
  • i = 0 থেকে স্ট্রিং S-র আকার পর্যন্ত
    • যদি S[i] ওপেনিং প্যারেনথিসিস হয়, তবে স্টকে -1 পুশ করুন
    • অন্যথায়
      • যদি স্টকের টপ -1 হয়, তবে পপ করে 1 পুশ করুন
      • অন্যথায়
        • x := 0
        • যতক্ষণ স্টকের টপ -1 না হয়
          • x কে স্টকের টপ দিয়ে বাড়ান, স্টকে পপ করুন
        • x := x * 2
        • স্টকে পপ করুন, এবং x পুশ করুন
  • যতক্ষণ স্ট্যাক খালি না হয়
    • ans কে স্টকের টপ দিয়ে বাড়ান, এবং টপ এলিমেন্ট পপ করুন
  • ans ফেরত দিন

উদাহরণ কোড

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

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

main(){
    Solution ob;
    cout << (ob.scoreOfParentheses("(()(()))"));
}

ইনপুট

"(()(()))"

আউটপুট

6
  1. C++-এ Minimum Remove to Make Valid Parentheses

  2. C++-এ প্যarethেসিস (Parentheses) متعادل করার খরচ (Cost to Balance Parentheses)

  3. C++-এ সমতুল্য পারেন্থেসিসের সব কম্বিনেশন প্রিন্ট করা

  4. C++-এ বৈধ প্যারেরেনথেসিস (Valid Parentheses)