【UVA】673 Parentheses Balance(栈处理表达式)
题目
分析
写了个平淡无奇的栈处理表达式,在WA了5发后发现,我没处理空串,,,,(或者说鲁棒性差?
代码
#include <bits/stdc++.h>
using namespace std;
bool equal(char a,char b)
{
if((a=='(' && b==')') || (a=='[' && b==']')) return true;
return false;
}
int main()
{
int len,t;
string str;
cin>>t;cin.get();
while(t--)
{
int flag=1;
getline(cin,str);
stack<char> s;
for(int i=0;i<str.length();i++)
{
if(str[i]=='('||str[i]=='[')
{
s.push(str[i]);
continue;
}
if(s.empty())
{
flag=false;
break;
}
char x=s.top(); s.pop();
if(!equal(x,str[i]))
{
flag=false;
break;
}
}
if(!s.empty()) flag=false;
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步