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

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

描述

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

括号配对问题

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

 
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3[(])(])([[]()])
样例输出
NoNoYes 开始想的比较简单,直接计数。后来发现题目比想象的复杂,只好用栈来实现了。
1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 char s[10002]; 8 stack
temp; 9 10 bool isOk() {11 int len = strlen(s);12 for(int i = 0; i < len; i++) {13 if(s[i] == '(') {14 temp.push('(');15 }16 if(s[i] == ')') {17 if(temp.empty()) {18 return false;19 }20 if(temp.top() != '(') {21 return false;22 }23 else {24 temp.pop();25 }26 }27 if(s[i] == '[') {28 temp.push('[');29 }30 if(s[i] == ']') {31 if(temp.empty()) {32 return false;33 }34 if(temp.top() != '[') {35 return false;36 }37 else {38 temp.pop();39 }40 }41 }42 if(temp.empty()) {43 return true;44 }45 return false;46 }47 48 int main(int argc, char const *argv[])49 {50 int n;51 while(scanf("%d",&n) != EOF) {52 while(n--) {53 scanf("%s",s);54 while(!temp.empty()) {55 temp.pop();56 }57 58 if(isOk()) {59 puts("Yes");60 }61 else {62 puts("No");63 64 }65 }66 }67 return 0;68 }

 

转载于:https://www.cnblogs.com/jasonJie/p/6083847.html

你可能感兴趣的文章
hdu 1005 根据递推公式构造矩阵 ( 矩阵快速幂)
查看>>
安装php扩展
查看>>
百度移动搜索主要有如下几类结果构成
查看>>
Python爬虫面试题170道:2019版【1】
查看>>
JavaBean规范
查看>>
第四阶段 15_Linux tomcat安装与配置
查看>>
NAS 创建大文件
查看>>
学习笔记-模块之xml文件处理
查看>>
接口测试用例
查看>>
面试:用 Java 实现一个 Singleton 模式
查看>>
Sybase IQ导出文件的几种方式
查看>>
案例:手动输入一个字符串,打散放进一个列表,小写字母反序 大写字母保持不变...
查看>>
linux 系统下 tar 的压缩与解压缩命令
查看>>
阿里负载均衡,配置中间证书问题(在starcom申请免费DV ssl)
查看>>
转:How to force a wordbreaker to be used in Sharepoint Search
查看>>
MySQL存储过程定时任务
查看>>
Python中and(逻辑与)计算法则
查看>>
POJ 3267 The Cow Lexicon(动态规划)
查看>>
设计原理+设计模式
查看>>
音视频处理
查看>>