nyoj 题目2 括号配对问题
2024-08-29 22:48:49
描述
今天发现了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 ;
}
最新文章
- Android之三种网络请求解析数据(最佳案例)
- Ubuntu(Linux) + mono + xsp4 + nginx +asp.net MVC3 部署
- 分分钟搞定IOS远程消息推送
- DBCP连接池配置示例
- Python之路Day13--堡垒机
- 如何删除datatable中的一行数据
- jQuery 3.0 的变化
- linux学习之一些琐碎知识点
- sprite图在移动端的使用
- oracle中,拼接的字符串给游标赋值
- Cheatsheet: 2013 12.17 ~ 12.31
- 2016 ACM/ICPC 沈阳站 小结
- Experience all that SharePoint 15 has to offer. Start now or Remind me later.
- eclipse打开一闪而过,环境安装正确
- JavaScript动漫作品(闭幕)
- SBT详解
- 几种常见的开源软件许可协议(GPL, LGPL, Apache License, BSD)
- android笔记---百度地图api应用 (一)
- Mysql 性能分析 Explain
- 使用jstack和TDA进行java线程dump分析
热门文章
- SQLServer 2012 报表服务部署配置(2)
- python+selenium之验证码的处理
- dataset datatable datacolums datarow
- JavaScript_11_验证
- UVA 674 Coin Change 硬币转换(完全背包,常规)
- LibreOJ #515. 「LibreOJ β Round #2」贪心只能过样例
- 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型
- wxWidgets:处理wxEVT
- Stream great concerts wherever you are
- javaweb基础(24)_jsp一般的标签开发