描述

今天发现了nyoj,如获至宝。准备开刷。

括号配对问题

现在,有一行括号序列,请你检查这行括号是否配对。

 
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes 开始想的比较简单,直接计数。后来发现题目比想象的复杂,只好用栈来实现了。
 #include <cstdio>
#include <cstring>
#include <stack> using namespace std; char s[];
stack <char> temp; bool isOk() {
int len = strlen(s);
for(int i = ; i < len; i++) {
if(s[i] == '(') {
temp.push('(');
}
if(s[i] == ')') {
if(temp.empty()) {
return false;
}
if(temp.top() != '(') {
return false;
}
else {
temp.pop();
}
}
if(s[i] == '[') {
temp.push('[');
}
if(s[i] == ']') {
if(temp.empty()) {
return false;
}
if(temp.top() != '[') {
return false;
}
else {
temp.pop();
}
}
}
if(temp.empty()) {
return true;
}
return false;
} int main(int argc, char const *argv[])
{
int n;
while(scanf("%d",&n) != EOF) {
while(n--) {
scanf("%s",s);
while(!temp.empty()) {
temp.pop();
} if(isOk()) {
puts("Yes");
}
else {
puts("No"); }
}
}
return ;
}

最新文章

  1. Android之三种网络请求解析数据(最佳案例)
  2. Ubuntu(Linux) + mono + xsp4 + nginx +asp.net MVC3 部署
  3. 分分钟搞定IOS远程消息推送
  4. DBCP连接池配置示例
  5. Python之路Day13--堡垒机
  6. 如何删除datatable中的一行数据
  7. jQuery 3.0 的变化
  8. linux学习之一些琐碎知识点
  9. sprite图在移动端的使用
  10. oracle中,拼接的字符串给游标赋值
  11. Cheatsheet: 2013 12.17 ~ 12.31
  12. 2016 ACM/ICPC 沈阳站 小结
  13. Experience all that SharePoint 15 has to offer. Start now or Remind me later.
  14. eclipse打开一闪而过,环境安装正确
  15. JavaScript动漫作品(闭幕)
  16. SBT详解
  17. 几种常见的开源软件许可协议(GPL, LGPL, Apache License, BSD)
  18. android笔记---百度地图api应用 (一)
  19. Mysql 性能分析 Explain
  20. 使用jstack和TDA进行java线程dump分析

热门文章

  1. SQLServer 2012 报表服务部署配置(2)
  2. python+selenium之验证码的处理
  3. dataset datatable datacolums datarow
  4. JavaScript_11_验证
  5. UVA 674 Coin Change 硬币转换(完全背包,常规)
  6. LibreOJ #515. 「LibreOJ β Round #2」贪心只能过样例
  7. 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型
  8. wxWidgets:处理wxEVT
  9. Stream great concerts wherever you are
  10. javaweb基础(24)_jsp一般的标签开发