【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;
}
原文地址:https://www.cnblogs.com/noblex/p/7911596.html