60分求调,无栈纯暴力,已老实
查看原帖
60分求调,无栈纯暴力,已老实
1526602
flashfear楼主2024/11/19 20:06
#include <bits/stdc++.h>

using namespace std;

void dispose(char c) {
    if (c == '[' || c == ']')
        cout << "[]";
    else if (c == '(' || c == ')')
        cout << "()";
}

int main() {
    string str;
    getline(cin, str);
    vector<int> vc1(str.size(), 0);
    vector<char> vc2(str.size());
    for (int i = 0; i < str.size(); i++) {
        if (str[i] == '[' || str[i] == '(') vc2[i] = 'z';
        if (str[i] == ']' || str[i] == ')') vc2[i] = 'y';
    }

    for (int i = 0; i < str.size(); i++) {
        if (vc2[i] == 'y') {
            for (int j = i; j >= 0; j--){
                if (vc2[j] == 'z' && vc1[j] == 0) {
                    if (str[i] == ']' && str[j] == '[' || str[i] == ')' && str[j] == '(') {
                        vc1[i] = vc1[j] = 1;
                        break;
                    }
                }
            }
        }
    }

    for (int i = 0; i < str.size(); i++) {
        if (vc1[i] == 0) {
            dispose(str[i]);
            continue;
        }
        cout << str[i];
    }

    system("pause");
    return 0;
}
2024/11/19 20:06
加载中...