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