用stack进行括号匹配,求指点哪里出错了。
#include <iostream>#include <stack>
#include <cstring>
using namespace std;
int main()
{
int N;
stack <char> s;
char a[1000];
s.push('@');
cin>>N;
getchar();
while(N--)
{
gets(a);
int len=strlen(a);
if(len%2!=0)
cout<<"No"<<endl;
else
{
for(int i=0;i<len;i++)
if(a[i]=='['||a[i]=='(')
s.push(a[i]);
else if((a[i]=='['&&s.top()==']')||(a[i]=='('&&s.top()==')'))
s.pop();
else
s.push(a[i]);
if(s.top()=='@')
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}