样例补充
[)]
[()]
题解
#include<iostream>
#include<string>
using namespace std;
const int N = 2e5 + 9;
int stack[N],top=0;
bool ok[N];
string s;
int main()
cin >> s;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '(' || s[i] == '[') {
stack[++top] = i;
}
else if (top) {
if (s[stack[top]] == '(' && s[i] == ')' || s[stack[top]] == '[' && s[i] == ']')
{
ok[i] = 1;
ok[stack[top]] = 1;
top--;
}
}
}
for (int i = 0; i < s.length(); i++) {
if (ok[i]) cout << s[i];
else {
if (s[i] == '[' || s[i] == ']') { cout << "[]"; }
else {
cout << "()";
}
}
}
return 0;
}