标签:
思路:if ,else if,else三者之间的关系。。我当时else if换成if就不对,最后发现了,如果输入[],最后q.pop()。栈为空,如果是if的话,就输出No了。。这一点区别要注意。。
#include<iostream>
#include<stack>
#include<string.h>
using namespace std;
int main()
{
int n,len,i;
stack<char>q;
char s[10000];
cin>>n;
while(n--)
{
int flag=1;
while(!q.empty())
q.pop();
cin>>s;
len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]=='['||s[i]=='(')
q.push(s[i]);
if(s[i]==')')
{
if(!q.empty() && q.top()=='(')
q.pop();
else if(!q.empty() && q.top()!='(' ||q.empty())
{
flag=0;
cout<<"No"<<endl;
break;
}
}
if(s[i]==']')
{
if(!q.empty() && q.top()=='[')// []
q.pop();
else if(!q.empty() && q.top()!='[' ||q.empty())
{
flag=0;
cout<<"No"<<endl; //([[]()])
break;
}
}
}
if(q.empty() && flag==1)// ())
cout<<"Yes"<<endl;
if(!q.empty() &&flag==1) // (()
cout<<"No"<<endl;
}
return 0;
}标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/43983747