nyoj-括号匹配问题
时间:2022-05-05
本文章向大家介绍nyoj-括号匹配问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
括号配对问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述现在,有一行括号序列,请你检查这行括号是否配对。
输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
来源网络上传者naonao问题分析----这种问题一般是从里到外进行配对比如第三个(【【】()】)先进行里面的判断【】()两个配对,所以剪掉,形成新的链表(【】)再判断【】,显然配对所以剩下(),依次这样最后得到head(指针)为NULL,如果最后为NULL,则作为完全匹配,否则作为不完全配对......实现代码: (c语言版)由于c++的sTL写,太简单了,就不写了;
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct NODE
{
char a;
struct NODE *next ;
}Node;
int main( void )
{
int n,t,flag;
Node *head,*p1,*p2;
scanf("%d",&t);
getchar();
while(t--)
{
head=NULL;
flag=n=0;
p1=p2=(Node*)malloc(sizeof(Node));
while(p1->a=getchar(),p1->a!='n')
{
if(++n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(Node *)malloc(sizeof(Node));
}
p2->next=NULL;
/* p1=head;
while(p1!=NULL)
{
putchar(p1->a);
p1=p1->next;
}
puts("");*/
while(1)
{
p2=p1=head;
n=flag=0;
while(p1!=NULL&&p1->next!=NULL)
{
if(n++!=0)p1=p1->next;
if(p1->next==NULL)break;
if((p1->a=='('&&p1->next->a==')')||(p1->a=='['&&p1->next->a==']'))
{
flag=1;
if(p1==head)
{
p1=p1->next;
head=p1->next;
}
else
{
p1=p1->next;
p2->next=p1->next;
}
}
else
p2=p1;
}
/* p2=p1=head;
while(p1!=NULL)
{
putchar(p1->a);
p1=p1->next;
}
if(p2!=NULL) puts("");*/
if(!flag)break;
}
puts(head==NULL?"Yes":"No");
free(head);
// free(p1);
// free(p2);
}
return 0;
}
- WordPress 文章截断方式:有more标签的优先more标签,否则截断一定字数
- 为什么要探索宇宙
- Redis的各项功能解决了哪些问题?
- WordPress.com 宣布支持Markdown 语言
- 使用Topshelf 5步创建Windows 服务
- TGM Plugin Activation:为WordPress 主题添加“插件推荐安装”功能
- [腾讯社区开放平台]介绍开放授权协议-OAuth
- HTML5规范的本地存储
- ASP.NET Web API 处理架构
- ASP.NET MVC 4中的单页面应用程序
- [信息安全] 4.一次性密码 && 身份认证三要素
- 拥抱大数据时代
- 腾讯社区开放平台.NET SDK在Mono下运行
- Redis Web界面管理工具
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法