例题5.5括号匹配问题

/*
stack的用途:括号匹配问题
string answer(s.size(),' ');//字符串的一种定义方式 //存放要输出的字符串

只入栈(的序号

遇到(就将其序号存入stack,
遇到 )就检验能否匹配,
如果能匹配 ( 出栈,若为空则改变answer对应)序号的字符为?
最后将栈中剩下的全部( 在answer中根据对应序号改为 $ 

*/
#include<iostream>
#include<stack>
using namespace std;

int main()
{
string s;
cin>>s;
string answer(s.size(),' ');//字符串的一种定义方式 
stack<int> pp;
for(int i=0;i<s.size();i++)
{
if(s[i]=='(')
pp.push(i);
else if(s[i]==')')
{
if(!pp.empty())
pp.pop();
else
{
answer[i]='?';
}
}


}
while(!pp.empty())
{
int x=pp.top();
pp.pop();
answer[x]='$';
}
cout<<s<<endl;
cout<<answer;

return 0;
 }
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务