24求助悬关
查看原帖
24求助悬关
741732
small_Dongpo楼主2024/3/22 11:12
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
using namespace std;

typedef long long l;
string s, ans = "";
stack<char> st;

int main() {
    cin >> s;
    for (l i = 0; i < s.size(); ++i) {
        if (s[i] == '(') {
            while (!st.empty() && st.top() == '[') {
                ans.push_back(']');
                st.pop();
            }
            st.push('(');
            ans.push_back('(');
        } else if (s[i] == '[') {
            while (!st.empty() && st.top() == '(') {
                ans.push_back(')');
                st.pop();
            }
            st.push('[');
            ans.push_back('[');
        } else if (s[i] == ')') { 
             if (st.top() == '(') {
                st.pop();
                ans.push_back(')');
            } else {
                while (!st.empty() && st.top() == '[') {
                    ans.push_back(']');
                    st.pop();
                }
                ans.push_back('(');
                ans.push_back(')');
            }
        } else if (s[i] == ']') {
            if (st.top() == '[') {
                st.pop();
                ans.push_back(']');
            } else {
                while (!st.empty() && st.top() == '(') {
                    ans.push_back(')');
                    st.pop();
                }
                ans.push_back('[');
                ans.push_back(']');
            }
        }
    }
    while (!st.empty()) {
        if (st.top() == '(') {
            ans.push_back(')');
        } else {
            ans.push_back(']');
        }
        st.pop();
    }
    cout << ans;
    return 0;
}
2024/3/22 11:12
加载中...