括号配对问题
来源:互联网 发布:李荣浩2017新专辑知乎 编辑:程序博客网 时间:2024/05/16 06:19
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0 < N <= 100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有”[“,”]”,”(“,”)”四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([])
样例输出
No
No
Yes
算法思路:将字符串放在栈中,遇到匹配的将其弹出去,遇到不匹配的就退出循环。将其匹配和不匹配的记录,然后将其打印。
#include <iostream>#include <algorithm>#include <bits/stdc++.h>#include <stack>using namespace std;int judge[10000];char kuohao[10000];stack<char> s[100];int main(){ int N; int j = 0; cin >> N; for(int i = 0; i < N ; i++) { cin >> kuohao; s[i].push('e'); if(kuohao[j] != '(' && kuohao[j] != ')' && kuohao[j] != '[' && kuohao[j] != ']') { memset(kuohao,0,sizeof(kuohao)); judge[i] = 0; j = 0; continue; } while(kuohao[j] == '(' || kuohao[j] == ')' || kuohao[j] == '[' || kuohao[j] == ']') { if(kuohao[j] == '(' || kuohao[j] == '[') { s[i].push(kuohao[j]); } if(kuohao[j] == ')') { if(s[i].top() == '(') s[i].pop(); else s[i].push(kuohao[j]); } if(kuohao[j] == ']') { if(s[i].top() == '[') s[i].pop(); else s[i].push(kuohao[j]); } j++; } memset(kuohao,0,sizeof(kuohao)); if(s[i].top() == 'e') judge[i] = 1; j = 0; } for(int i = 0; i < N ; i++) { if(judge[i]) cout << "Yes" <<endl; else cout << "No" << endl; }}
优化代码:
#include<iostream>#include<vector>#include<string>using namespace std;int main(){ int n; cin>>n; while(n--) { vector<char> vec; string ch; vec.push_back(' '); cin>>ch; for(int i=0;i<ch.length();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"<<endl; else cout<<"No"<<endl; } return 0;}
0 0
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- NYOJ - 括号配对问题
- nyoj 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- [ACM]括号配对问题
- NYOJ2 括号配对问题
- 括号配对问题
- 2 括号配对问题
- 括号配对问题
- 括号配对问题
- 【括号配对问题 2】
- 安卓推送
- Intellij license server
- 关于SHA1碰撞——比较两个binary的不同之处
- 欢迎使用CSDN-markdown编辑器
- codeforce 510 C 拓扑排序
- 括号配对问题
- NumPy学习笔记(2)--Array数组和矩阵基本运算
- Android微信智能心跳方案
- python学习预备
- 结构体指针操作理解应用
- Servlet执行Shell并返回结果
- Python字典排序
- NumPy学习笔记(3)--排序与索引
- Android推送技术研究