博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ny2 括号配对问题
阅读量:7207 次
发布时间:2019-06-29

本文共 1534 字,大约阅读时间需要 5 分钟。

括号配对问题

时间限制:
3000 ms  |  内存限制:
65535 KB
难度:
3
 
描述
现在,有一行括号序列,请你检查这行括号是否配对。
 
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3[(])(])([[]()])
样例输出
NoNoYes AC代码如下: 第一种方法:
1 #include
2 3 #define Max 11000 4 5 char str[Max]; 6 7 int main() 8 9 {10 11 int ca,i;12 13 scanf("%d",&ca);14 15 getchar();16 17 while(ca--)18 19 {20 21 i = 0;22 23 while((str[i] = getchar()) != '\n')24 {25 26 if(((str[i] == ')' && str[i - 1] == '(') || (str[i] == ']' && str[i - 1] == '[')) && i > 0)27 28 i --;29 //输入一个判断前一个 前面是否有和它能够配对的字符;如果有则消去这两个字符30 31 else i ++;32 //否者继续输入33 }34 35 printf("%s\n", i ? "No" : "Yes");36 37 }38 39 return 0;40 }

 

第二种:用的C++库函数
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 stack< char >s; 7 bool mate(char a,char b) 8 { 9 return a=='(' && b==')' || a=='[' && b==']';10 }11 int main()12 {13 int n,i;14 char str[10100];15 cin>>n;16 while(n--)17 {18 while(!s.empty()) s.pop();19 cin>>str; 20 for(i=0;str[i]!='\0';i++)21 {22 if( s.empty() || !mate( str[i] ,s.top()) )23 s.push(str[i]) ;24 else s.pop() ;25 }26 if(s.empty())27 cout<<"Yes"<

 

 

转载于:https://www.cnblogs.com/lovychen/p/3191881.html

你可能感兴趣的文章
Eclipse+Maven命令创建webapp项目<三>
查看>>
Fiddler 教程(转)
查看>>
[十二省联考2019] 异或粽子
查看>>
CF360B Levko and Array (二分查找+DP)
查看>>
RQNOJ659 计算系数
查看>>
HTML实体符号查询
查看>>
【转】 ASP.NET网站路径中~(波浪线)解释
查看>>
oracle根据Date字段查询区间数据(转)
查看>>
[C语言] 数据结构-算法效率的度量方法-事前分析估算方法
查看>>
js_实用
查看>>
基础权限管理
查看>>
navicat for mysql快捷键
查看>>
PHP中设置时区方法小结
查看>>
netty源码分析
查看>>
linux-2.6内核驱动学习——jz2440之输入子系统
查看>>
Sizeof与Strlen的区别与联系
查看>>
Hadoop- NameNode和Secondary NameNode元数据管理机制
查看>>
python中socket模块详解
查看>>
Android 四大组件 (三) BroadcastReceiver 介绍
查看>>
一个友盟BUG的思考和分析:Invalid update
查看>>