括号配对问题
来源:互联网 发布:淘宝福利群是运作的 编辑:程序博客网 时间:2024/04/28 02:38
括号配对问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
3[(])(])([[]()])
- 样例输出
NoNoYes
算法:利用栈思想来进行求解。遍历整个字符串,如果当前字符是'('或者'['就进栈,如果是')'或者']'就看栈顶的字符是否是括号匹配,如果是匹配的就将栈顶的字符弹栈,如果不是匹配的直接返回false.
源码:
#include <iostream>#include <stack>#include <string.h>using namespace std;bool IsMatch(string &temp){stack<char> match_stack;char ch;int index=0;match_stack.push('#');while(index<temp.length()){ch = temp[index];if(ch=='('||ch=='['){match_stack.push(ch);}else if(ch==')'){char isc = match_stack.top();if(isc!='(')return false;elsematch_stack.pop();}else{char isc = match_stack.top();if(isc!='[')return false;elsematch_stack.pop();}index++;}if(match_stack.top()!='#')return false;elsereturn true;}int main(){int test;string input;cin>>test;while(test--){cin>>input;if(IsMatch(input)){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}return 0;}
还可以利用数组来模拟栈,源码如下:
#include <iostream>#include <string.h>using namespace std;int main(){char input[10000];char stack[10000];int test;cin>>test;while(test--){cin>>input;int si=0;bool flag = true;for(int i=0;i<strlen(input);i++){if(input[i]=='['||input[i]=='('){stack[si++] = input[i];}else{if(input[i]==')'){if(si<=0||stack[si-1]!='('){flag = false;break;}else{si--;}}else{if(si<=0||stack[si-1]!='['){flag = false;break;}else{si--;}}}}if(flag)cout<<"Yes"<<endl;elsecout<<"No"<<endl;}return 0;}
0 0
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- NYOJ - 括号配对问题
- nyoj 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- [ACM]括号配对问题
- NYOJ2 括号配对问题
- 括号配对问题
- 2 括号配对问题
- 括号配对问题
- 括号配对问题
- 【括号配对问题 2】
- 判断是否是微信浏览器
- python笔记1 对象类型小结
- WAMP环境下,Apache的端口号未被占用,但无法启动的问题
- 使用两个线程交替打印0到100的奇数和偶数
- Intellijidea建javaWeb以及Servlet简单实现
- 括号配对问题
- 第五周项目-构造三角形类(1)
- mac tab 补全设置
- (二)Html5创建表单及按钮
- head frist 设计模式学习之 装饰者模式
- 我是如何招聘程序员的(转载)
- Django1.8静态文件配置
- 如何查看查询oracle字符集、 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。
- 二分查找C++