括号配对问题 栈
来源:互联网 发布:linux更新软件源 编辑:程序博客网 时间:2024/06/05 17:46
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
3[(])(])([[]()])
- 样例输出
NoNoYes
分析:
该题目使用栈来实现,使用stl中的stack实现,注意使用stack时的注意事项:
1.
清除stack里面的数据的时候,只能使用while循环,判断只要非空,就要出栈
2.
使用st.top()函数的时候,一定要先判断st为非空,不然会出现runtime error
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#include <set>#include <map>#include <stack>#include <string>using namespace std;int main(){ int n; cin >> n; string s; stack<char>st; while(n--) { cin >> s; while(!st.empty()) st.pop(); for(int i = 0;i < s.length();i++) { if(s[i] == '('||s[i] == '[') st.push(s[i]); else if(s[i] == ')'||s[i] == ']') { if(s[i] == ')'&&!st.empty()&&st.top() == '(') st.pop(); else if(s[i] == ']'&&!st.empty()&&st.top() == '[') st.pop(); else st.push(s[i]); } } if(st.empty()) cout << "Yes" << endl; else cout << "No" << endl; }return 0;}
阅读全文
0 0
- 括号配对问题---栈
- 括号配对问题 栈
- 括号配对问题 栈实现
- 2 括号配对问题【栈】
- 括号配对问题----栈模拟
- 括号配对问题(栈)
- 括号配对问题(栈)
- NYOJ 2 括号配对问题(栈)
- 括号配对问题 栈的使用
- 括号配对问题 (栈模拟 简单题)
- 用栈解决括号配对问题
- 小白学ACM-括号配对问题(栈实现)
- nyoj2括号配对问题(数据结构---栈)
- 栈的经典问题:括号配对
- 初试栈问题ny2括号配对
- nyoj 括号配对问题(栈)
- NY 2 括号配对问题 【栈】
- 括号配对问题--nyoj-2(栈)
- HTML页面添加元素的方法
- jquery实战1-hide与show
- Java中的内部类
- 综合面试题整理(上)
- POJ_2431 (Expedition)
- 括号配对问题 栈
- 浅谈结构体内变量赋值问题
- 2 采集单个网页
- arcgis之shp文件坐标系互转
- 使用gcc在命令行中预定义宏
- hdu 1222
- C++对象模型中数据成员与继承
- JS一键复制 兼容PC(包括图片)+移动端
- Linux Ubuntu apt-get安装mysql