题目描述
http://pkuic.openjudge.cn/hw07/4/
在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用”$”标注,不能匹配的右括号用”?”标注.
###题目思路
- (入栈,遇)出栈
代码
#include <iostream>
#include<stack>
#include<string>
using namespace std;
int main() {
freopen("in.txt","r",stdin);
stack<int> st;
string s;
while(getline(cin,s)){
cout<<s<<endl;
for(int i=0;i<s.length();i++){
if(s.at(i)=='('){
st.push(i);
s[i]='$';
}else if(s.at(i)==')'){
if(st.empty()){
s[i]='?';
}else{
s[i]=' ';
int index=st.top();
s[index]=' ';
st.pop();
}
}else{
s[i]=' ';
}
}
cout<<s<<endl;
while(!st.empty()){
st.pop();
}
}
fclose(stdin);
return 0;
}