#include <stdio.h> int main() { int z; scanf("%d",&z); while(z--) { char ch,s[10001]; int top=-1; while((ch=getchar())!='\n')//中间没有空格 { if(ch==')' && top>=0 && s[top]=='(')//top>=0表明栈不空 top--; else if(ch==']' && top>=0 && s[top]=='[') top--; else s[++top]=ch; } if(top==-1) puts("Yes"); else puts("No"); } return 0; } //左括号的话入栈,右括号的话要么与栈顶配对要么错误 ,开始结束时栈要为空
#include<stdio.h> #include<string.h> char str[10001]; int main() { int i,j,T;int top=-1,len; scanf("%d%*c",&T); while(T--) { top=0; memset(str,0,sizeof(str)); scanf("%s",str); len=strlen(str); for(i=1;i<len;i++) { if(str[i]==')'&&str[top]=='('&&top!=-1) top--; else if(str[i]==']'&&str[top]=='['&&top!=-1) top--; else str[++top]=str[i]; // printf("%d %d\n",i,top); } if(top==-1) puts("Yes"); else puts("No"); } return 0; }