ACM_括号匹配

括号匹配(栈)

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

Problem Description:

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

Input:

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

Output:

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

Sample Input:

1()) 2[(]) 3([[]()])

Sample Output:

1No 2No 3Yes解题思路:栈的运用。注意使用t.top()函数前要用t.empty()先判断是否栈空,不然会出错!AC代码: 4 5 1 #include<bits/stdc++.h> 6 2 using namespace std; 7 3 char s[100005]; 8 4 int main(){ 9 5 while(cin>>s){ 10 6 stack<char> t; 11 7 bool flag=false; 12 8 for(int i=0;i<(int)strlen(s);++i){ 13 9 if(s[i]=='[' || s[i]=='(')t.push(s[i]); 1410 else if(s[i]==')'){ 1511 if(!t.empty() && t.top()=='(')t.pop(); 1612 else{flag=true;break;} 1713 } 1814 else{ 1915 if(!t.empty() && t.top()=='[')t.pop(); 2016 else{flag=true;break;} 2117 } 2218 } 2319 if(flag)cout<<"No"<<endl; 2420 else cout<<"Yes"<<endl; 2521 } 2622 return 0; 2723 }
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java正则_$等特殊字符匹配

java正则表达式对某些特殊符号做了预定义,当要正则匹配这些特殊符号时,就需要转义。示例:匹配美元符号与尖括号保卫的字符($<xxxx) Stringregex"\\u0024<(AZ_az09)";附:特殊符号转义字符点的转义:.\\\\u002E美元符号的转义:$\\\\u0024

java正则表达式

Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点)1     英文句点符号:匹配单个任意字符。eg:表达式”t。o 可以匹配:tno,to,teo等等。不可以匹配:tnno,to,Tno,t正o等。2     方括号:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。eg:表达式:t\ab

Python 元组(Tuple)操作详解

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可一、创建元组代码如下:tup1('physics','chemistry',1997,2000);tup2(1,2,3,4,5);tup3"a","

MySql 小表驱动大表

在了解之前要先了解对应语法in与exist。IN:selectfromAwhereA.idin(selectB.idfromB)in后的括号的表达式结果要求之输出一列字段。与之前的搜索字段匹配,匹配到相同则返回对应行。mysql的执行顺序是先执行子查询,然后执行主查询,用子查询的结果按条匹配

Python的小括弧,中括号,大括号还有尖括号的区别

在使用python做项目的过程中发现这种语言使用了很多种类型的括号来表达数据类型,常见的有四种,分别是:小括号()、中括号\\和大括号,也叫做花括号{},还有尖括号<,其作用也各不相同,分别用来代表不同的python基本内置数据类型。1、python中的小括号():代表tuple元组数据类型,元组是一种不可变序列。创建方法很简单,大多时候都