ACM_括号匹配

Wesley13
• 阅读 485

括号匹配(栈)

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

给一组包含[]()两种括号的序列,检查是否是合法的。
如:()[],([]),[()]是合法的;()),[(),]()[,([)]是非法的。

Input:

输入包含多组测试数据,对于每组数据,输入一个只包含'[',']','(',')',四种字符的括号序列S(1<=length(S)<=100000);

Output:

对于每组数据,如果括号序列合法输出Yes,否则输出no。

Sample Input:

())
[(])
([[]()])

Sample Output:

No
No
Yes解题思路:栈的运用。注意使用t.top()函数前要用t.empty()先判断是否栈空,不然会出错!AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char s[100005];
 4 int main(){
 5     while(cin>>s){
 6         stack<char> t;
 7         bool flag=false;
 8         for(int i=0;i<(int)strlen(s);++i){
 9             if(s[i]=='[' || s[i]=='(')t.push(s[i]);
10             else if(s[i]==')'){
11                 if(!t.empty() && t.top()=='(')t.pop();
12                 else{flag=true;break;}
13             }
14             else{
15                 if(!t.empty() && t.top()=='[')t.pop();
16                 else{flag=true;break;}
17             }
18         }
19         if(flag)cout<<"No"<<endl;
20         else cout<<"Yes"<<endl;
21     }
22     return 0;
23 }
点赞
收藏
评论区
推荐文章
待兔 待兔
2个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
2年前
java正则_$等特殊字符匹配
java正则表达式对某些特殊符号做了预定义,当要正则匹配这些特殊符号时,就需要转义。示例:匹配美元符号与尖括号保卫的字符($<xxxx) Stringregex"\\u0024<(AZ_az09)";附:特殊符号转义字符点的转义:.\\\\u002E美元符号的转义:$\\\\u0024
Wesley13 Wesley13
2年前
java正则表达式
Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点)1     英文句点符号:匹配单个任意字符。eg:表达式”t。o 可以匹配:tno,to,teo等等。不可以匹配:tnno,to,Tno,t正o等。2     方括号:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。eg:表达式:t\ab
Easter79 Easter79
2年前
sublime C++配置
插件:解析json prettyjson,ctrlaltj解析ctrlaltm还原旁栏Side​Bar​Enhancements括号匹配BracketHighlighter旁栏颜色SyncedSidebarBg行末多余空格TrailingSpaces主题materialtheme选中高亮Color
Bill78 Bill78
3年前
Python 元组(Tuple)操作详解
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可一、创建元组代码如下:tup1('physics','chemistry',1997,2000);tup2(1,2,3,4,5);tup3"a","
Wesley13 Wesley13
2年前
MySql 小表驱动大表
在了解之前要先了解对应语法in与exist。IN:selectfromAwhereA.idin(selectB.idfromB)in后的括号的表达式结果要求之输出一列字段。与之前的搜索字段匹配,匹配到相同则返回对应行。mysql的执行顺序是先执行子查询,然后执行主查询,用子查询的结果按条匹配
Stella981 Stella981
2年前
Python的小括弧,中括号,大括号还有尖括号的区别
在使用python做项目的过程中发现这种语言使用了很多种类型的括号来表达数据类型,常见的有四种,分别是:小括号()、中括号\\和大括号,也叫做花括号{},还有尖括号<,其作用也各不相同,分别用来代表不同的python基本内置数据类型。1、python中的小括号():代表tuple元组数据类型,元组是一种不可变序列。创建方法很简单,大多时候都
Wesley13 Wesley13
2年前
Java解决括号匹配算法问题
有效字符串需满足:左括号必须用相同类型的右括号闭合。包括:“()”,“\\”,“{}”。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路:在这里我们使用栈来实现。遍历字符串时判断:如果是左括号,那么我们将其入栈;如果为右括号,我们先判断栈是否为空(有可能字符串刚开始就是一个右括号呢),为空的话直接返回false,不为空
Wesley13 Wesley13
2年前
20165322 第一周结队编程
结队编程四则运算阶段总结学习笔记中缀表达式转换为后缀表达式如果遇到数字,我们就直接将其输出。如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。如果遇到一个右括号,持续出栈并输出符号
Wesley13 Wesley13
2年前
HDOJ 1237题 简单计算器
简单计算器TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):15220AcceptedSubmission(s):5195ProblemDescription读入一个只包含,