描述
現在,有一行括號序列,請你檢查這行括號是否配對。
-
輸入
- 第一行輸入一個數N(0<N<=100),表示有N組測試數據。後面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小於10000,且S不是空串),測試數據組數少於5組。數據保證S中只含有"[","]","(",")"四種字符
-
輸出
- 每組輸入數據的輸出佔一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No
-
樣例輸入
-
3
[(])
(])
([[]()])
-
樣例輸出
-
No
No
Yes
#include<stdio.h>
struct note
{
char st[10010];
int top;
} a;
int main()
{
int n,i;
char x[10010];
scanf("%d",&n);
while(n--)
{
scanf("%s",x);
a.top = 0;
int f = 0;
for(i = 0;x[i]!='\0';i++)
{
if(x[i] == '('||x[i] == '[')
{
a.st[++a.top] = x[i];//入棧
}
else
{
if(a.st[a.top] == '(' && x[i] == ')')
a.top--; //出棧
else if(a.st[a.top] == '[' &&x[i] ==']')
a.top--;
else
{
f = 1;
break;
}
}
}
if(f||a.top != 0) printf("No\n");
else printf("Yes\n");
}
return 0;
}