括号匹配

输入:一行无序的括号

输出: 一个整数,即最少需要添加的括号数使之成为对的括号序列(可以是嵌套匹配)

样例1:

输入:[[[

输出:3

样例2:

输入:[)(]

输出:2

样例3:

输入:[)

输出:2

#include

using namespace std;

int minAddToMakeValid(string str) {
    stack st1;
    stack st2;
    stack st3;
    int ans = 0;
    for(auto ch : str){
        if(ch == '(') st1.push(ch);
        if(ch == ')'){
            if(!st1.empty()){
                st1.pop();
            }
            else{
                ans++;
            }
        }
        if(ch == '[') st2.push(ch);
        if(ch == ']'){
            if(!st2.empty()){
                st2.pop();
            }
            else{
                ans++;
            }
        }
        if(ch == '{') st3.push(ch);
        if(ch == '}'){
            if(!st3.empty()){
                st3.pop();
            }
            else{
                ans++;
            }
        }
    }
    return ans + st1.size() + st2.size() + st3.size();
}

int main()
{
    string str = "[)(]";
    cout<

 

你可能感兴趣的:(括号匹配)