标签:表示 tac ack strong namespace 问题: 替代 turn 测试数据
栈:stl的一种容器,遵循先进后出原则,,只能在栈的顶部操作,就像放盘子一样,洗好的盘子叠在上面,需要用时也是先从顶部拿。不允许被遍历,没有迭代器
基本操作:
1.头文件#include<stack>
2.top() 返回栈顶元素
3.pop() 弹出栈顶元素
4.empty()若栈空返回true,非空返回false
5.size() 返回栈的元素个数,在c++判断里,0是false,非0是true,作用可以上可以替代empty()
6.push() 入栈
栈的经典问题:括号配对问题
描述
现在,有一行括号序列,请你检查这行括号是否配对。
3 [(]) (]) ([[]()])
No No Yes
AC代码:
#include<stdio.h> #include<string> #include<stack> #include<iostream> using namespace std; int main() { int t; cin>>t; while(t--) { string s; cin>>s; char a; stack<char>sta; int len=s.size(),flag=1; for(int i=0;i<len;i++) { a=s[i]; if(a==‘[‘||a==‘(‘)///左括号直接入栈 sta.push(a); else if(a==‘]‘) ///右括号分情况讨论 { if(sta.size()&&sta.top()==‘[‘)///必须要判断栈是否为空,如果栈空,还去访问栈顶元素,越界,提交会RE sta.pop(); else {flag=0;break;} } else if(a==‘)‘) { if(sta.size()&&sta.top()==‘(‘) sta.pop(); else {flag=0;break;} } } if(flag) printf("Yes\n"); else printf("No\n"); } return 0; }
标签:表示 tac ack strong namespace 问题: 替代 turn 测试数据
原文地址:https://www.cnblogs.com/shoulinniao/p/9556233.html