括号匹配问题

匿名 (未验证) 提交于 2019-12-03 00:30:01

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; }
文章来源: 括号匹配问题
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!