思路:
最先找到的‘]’或者‘)’它的前一个符号必定是匹配的括号,从最深入的括号开始不断往外查找,
#include <stdio.h>
#include <string.h>
int main()
{
int Ncase;
char a[10001];
int len;
int i,j;
scanf("%d",&Ncase);
while(Ncase--)
{
scanf("%s",a);
len=strlen(a);
if (len%2!=0)
{
printf("No\n");
}
else
{
for (i=0;i<len;i++)
{
if (a[i]==']'||a[i]==')')
{
if ((a[i-1]=='('&&a[i]==')')||(a[i-1]=='['&&a[i]==']'))
{
if (len==2)
{
continue;
}
else
{
for (j=i+1;j<len;j++)
{
a[j-2]=a[j];
}
len-=2;
i-=2;
}
}
else
break;
}
}
if (i==len&&(a[len-1]==']'||a[len-1]==')'))
{
printf("Yes\n");
}
else
printf("No\n");
}
}
return 0;
}