括号配对问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述 现在,有一行括号序列,请你检查这行括号是否配对。
输入第一行输入一个数N(0 [(]) (]) ([[]()]) 样例输出No No Yes #include #include #include #include using namespace std; int main() { char s[10001]; int t; scanf("%d",&t); while(t--) { scanf("%s",s); int len=strlen(s); if(len%2!=0) printf("No\n"); else { stack for(int i=0;i { if(q.empty()) q.push(s[i]); else if(s[i]==']'&&q.top()=='[') { q.pop(); } else if(s[i]==')'&&q.top()=='(') { q.pop(); } else q.push(s[i]); } if(q.empty()) printf("Yes\n"); else printf("No\n"); } } return 0; } #include #include #include using namespace std; int main() { int n; cin>>n; while(n--) { vector string ch; vec.push_back(' '); cin>>ch; for(int i=0;i { vec.push_back(ch[i]); if( vec.back()-1 == *(vec.end()-2) || vec.back()-2 == *(vec.end()-2)) { vec.pop_back(); vec.pop_back(); } } if(vec.size()==1) cout<<"Yes"< else cout<<"No"< } return 0; }