nyoj-2 括号配对问题 栈
括号配对问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
-
3 [(]) (]) ([[]()])
- 样例输出
-
No No Yes
- 来源
- 网络
- 上传者
- naonao
- 题解
- 栈
- 代码
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<stack> 5 #include<algorithm> 6 using namespace std; 7 int main(){ 8 int t; 9 cin >> t; 10 getchar(); 11 while(t--){ 12 stack<char> stk; 13 char c; 14 while((c=cin.get())!='\n'){ 15 if(stk.empty()==true){ 16 stk.push(c); 17 }else if(c=='('||c=='['){ 18 stk.push(c); 19 } 20 else if(c==')'){ 21 if(stk.top()=='('){ 22 stk.pop(); 23 }else{ 24 stk.push(c); 25 } 26 } 27 else if(c==']'){ 28 if(stk.top()=='['){ 29 stk.pop(); 30 }else{ 31 stk.push(c); 32 } 33 } 34 } 35 if(stk.empty()==false) 36 cout << "No" << endl; 37 else 38 cout << "Yes" << endl; 39 } 40 return 0; 41 }

浙公网安备 33010602011771号