文章
3
粉丝
28
获赞
6
访问
1.4k
将 '(' 插入栈时也插入 '(' 的下标(结构体),最后遍历栈,将对应下标位置字符设置为 '$'。
#include <bits/stdc++.h>
using namespace std;
struct ch {
char c;
int idx;
};
void match(string s) {
stack<ch> stk;
string f(s.length(), ' ');
int len = s.length();
int i;
for (i = 0; i < len; ++i) {
if (s[i] == '(') {
f[i] = ' ';
stk.push({s[i], i});
}
else if (s[i] == ')') {
if (!stk.empty()) {
f[i] = ' ';
stk.pop();
}
else
f[i] = '?';
}
else
f[i] = ' ';
}
while (!stk.empty()) {
f[stk.top().idx] = '$';
stk.pop();
}
cout << s << endl;
cout << f << endl;
}
int main() {
int n, i;
string s;
while (cin >> s) {
match(s);
}
}
登录后发布评论
暂无评论,来抢沙发