验证括号的匹配(艾伦图灵的栈操作)
题目链接:http://acm.ayit.edu.cn/contest/12/problem/50
分析:保证括号的全部匹配,可以通过入栈和出栈的操作,最终通过判断栈是否为空来判断是否为合法的括号序列。
用数组模拟栈:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[100005],st[100005];
int main(){scanf("%s",a);int len=strlen(a);int t=0;for(int i=0; i<len; i++){if(a[i]=='('||a[i]==')'||a[i]=='{'||a[i]=='}'||a[i]=='['||a[i]==']'){if(a[i]==')'&&st[t-1]=='(')t--;/*出栈操作*/else if(a[i]=='}'&&st[t-1]=='{')t--;else if(a[i]==']'&&st[t-1]=='[')t--;elsest[t++]=a[i];/*入栈操作*/}}if(t==0)printf("YES\n");elseprintf("NO\n");return 0;
}
用stack堆栈容器
#include<cstdio>
#include<cstring>
#include<stack>
#include<algorithm>
using namespace std;
int main() {stack<char>q;char a[100001];scanf("%s",a);int len=strlen(a);for(int i=0; i<len; i++) {if(q.empty()) {q.push(a[i]);continue;}int x=q.top();/*访问栈顶元素*/if(x=='('&&a[i]==')')q.pop();else if(x=='{'&&a[i]=='}')q.pop();else if(x=='['&&a[i]==']')q.pop();elseq.push(a[i]);}if(q.empty())printf("YES\n");elseprintf("NO\n");return 0;
}
出来混,迟早要还的。
验证括号的匹配(艾伦图灵的栈操作)相关推荐
- python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...
算法 数据结构 数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题 在平时写程序当中,我们会经常遇到程序当中括号的匹配问题,也就是在程序当中左括号的数量和右括号的数量必须相等.如 ...
- LeetCode Valid Parentheses(判断括号是否匹配)
题意:给出(,[,{,),],}括号组成的字符串, 判断括号是否匹配 思路:用栈结构判断 1.如果是(,[,{,将其入栈 2.如果遇到),],},看栈是否为空.栈顶元素是否对应为(,[,{ 3.将字符 ...
- 第2关:利用栈判断字符串括号是否匹配
#ifndef stack__h #define stack__h#include <stdio.h> #include <stdlib.h>typedef char T; / ...
- python 判断括号是否匹配_使用Python实现一个栈判断括号是否平衡
栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...
- 回文数、括号匹配(栈操作)
回文数 "xyzyx"是一个回文字符串,所谓回文字符串就是指正读反读均相同的字符序列,如"席主席"."记书记"."aha" ...
- 双针模型:验证括号,特殊case处理
我们知道双针:一般形式,两个指针都从左到右扫描,或者一头一尾两边朝中间扫描,或者在两个数组里扫描 验证括号,这个问题:一个指针扫描当前数组,另一个指针指向的是栈顶元素,也是双针模型的一种变形. 从这里 ...
- 【人工智能】数据科学2019发展趋势有哪些?计算机先驱艾伦•图灵这样说!
数据科学和分析领域在2018年的主要发展有哪些?2019年的主要趋势又如何?本文推荐业内12位大牛的观点,一起来看看他们是如何评价的吧! Meta Brown, @metabrown312, < ...
- 数据结构算法——判断表达式中的括号是否匹配
元旦三天假,闲着没事干,就想着复习一下学数据结构时的那些算法吧.本来是想用C语言来写的,无奈啊,三四年没用C了,基本上忘光光,还是用C#来写吧,而且.Net基类库中已经有了栈.队列等的实现,直接拿来用 ...
- 数据结构上机实践第五周项目3 - 括号的匹配
括号的匹配 本次实践将用到顺序栈的算法库,点击此处参考. 本次实践要求: 假设表达式中允许三种括号:圆括号.方括号和大括号.编写一个算法,判断表达式中的各种左括号是否与右括号匹配. 例如,输入2+( ...
最新文章
- 电脑qq收藏在哪里_电脑突然死机了怎么办?几种常见电脑故障及其解决方法
- itext转html为pdf 锚点,ITEXT输出pdf..docx
- 论文笔记之:Instance-aware Semantic Segmentation via Multi-task Network Cascades
- Java常见面试题及答案汇总
- python plt 批量修改全局样式
- 微软职位内部推荐-UX Designer II
- Keycloak服务器安装和配置
- 畅管进销存管理系统 v6.0
- 身份证前6位编码与地址对应关系表
- cad插入块_CAD中块插入点定义错了,插入位置不对怎么办?
- 爬虫网页框架代码和媒体对象
- 服务器有无线网卡么,全面认识服务器网卡:理论篇
- 想学Python,这68个内置函数你一定要搞定!
- 发起AI联盟,天猫精灵CES布局智能家居市场
- ppt复制切片器_手把手教你使用Excel切片器,小白也能做出好看又好玩的动态图表...
- 什么是嵌入式开发?初学者必看嵌入式学习课程
- java编译类代码_Java的源代码中定义几个类,编译结果就生成几个以“.class”后缀的字节码。...
- git拉取远程分支代码到本地并关联分支
- 树莓派:基于物联网的指纹打卡器
- 深度学习之目标检测综述