文章
40
粉丝
607
获赞
69
访问
422.1k
#include<iostream>
#include<string>
#include<cstring>
#include<stack>
#include<vector>
using namespace std;
int main() {
string s;
while (cin >> s) {
stack sta;
string str = s;//申请一个与s大小相等字符串空间str
for (int i = 0;i < s.size();i++) {
str[i] = ' ';//把申请的字符串空间str全部置为空格
if (s[i] == '(') {//如果是左括号则直接进栈
sta.push(i);
}
else if (s[i] == ')') {//是右括号看栈是不是空
if (!sta.empty()) {//不空说明栈中有左括号与当前右括号匹配
sta.pop();//把匹配的左括号出栈
}
else if (sta.empty()) {//如果栈空说明没有与之匹配的左括号
str[i] = '?';//需要在str上把相应的位置置为“?”号
}
}
}
while (!sta.empty()) {//判断栈是否为空,不空说明栈中有未匹配完的左括号
str[sta.top()] = '$';//把未匹配的左括号,在str相应位置置为“$”
sta.pop();
}
cout << s << endl << str << endl;//输出s,和str
}
return 0;
}
以))))UUUU((()为例
申请两个字符串空间s和str
S:
字符
|
)
|
)
|
)
|
)
|
U
... |
登录后发布评论
小七写的题解太棒了,点个赞