例题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;
}
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;
}
全部评论
相关推荐

点赞 评论 收藏
分享