括号匹配问题(1)

来源:互联网 发布:it行业发展前景分析 编辑:程序博客网 时间:2024/06/06 07:20

在某个字符串有左右括号和大小写字母:规定任何一个左括号都从内到外与在它右边且距离最近的右括号匹配,不能匹配的左括号用“$”标注,不能匹配的右括号用“?”标注。

样例输入:)(rttyy())sss)(

样例输出:)(rttyy())sss)(

                   ?                   ?$

#include<stdio.h>#include<stdlib.h>#include<stack>using namespace std;stack<int> S;char str[1000];char ans[1000];int main(){int i;scanf("%s",str);for(i=0;str[i]!=0;i++){   if(str[i]=='('){ ans[i]=' '; S.push(i);    }else if(str[i]==')')    { if(!S.empty()){S.pop();ans[i]=' '; } else ans[i]='?';}else ans[i]=' ';   } while(!S.empty()){ans[S.top()]='$';S.pop(); } ans[i]='\0'; puts(str); puts(ans);system("pause");return 0;}



0 0