【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;
}
posted @ 2017-11-28 19:04  noble_(noblex)  阅读(179)  评论(0编辑  收藏  举报
/* */