括号匹配问题(0962)
描述
假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。
input
由括号构成的字符串,包含”(“、”)“、”[“和”]“。
output
如果匹配输出YES,否则输出NO。
样例输入
[([][]())]
样例输出
YES
这道题的思路是遇到左括号就入栈,遇到右括号就让栈顶元素出栈匹配,若匹配成功继续,若不成功则输出NO,若将字符串扫描完毕栈不为空,则说明匹配不成功
代码如下
1 #include<iostream> 2 #include<algorithm> 3 #include<memory.h> 4 #include<string.h> 5 using std::cin; 6 using std::cout; 7 using std::endl; 8 using std::sort; 9 10 #define N 100 11 struct Stack { 12 char date[N]; 13 int top; 14 } stack; 15 //栈初始化 16 void init(Stack *stack) { 17 stack->top=-1; 18 memset(stack->date,0,sizeof(char)*N);//数据清零 19 } 20 21 bool isempty(Stack*stack) { //判断是否为空 22 return stack->top==-1; 23 } 24 bool isfull(Stack*stack)//判断栈溢出 25 { 26 return stack->top==N-1; 27 } 28 int gettop(Stack*stack)//获取栈顶 29 { 30 return stack->date[stack->top]; 31 } 32 void push(Stack*stack,char a)//压栈 33 { 34 if(isfull(stack)){ 35 return; 36 }else{ 37 stack->top++; 38 stack->date[stack->top]=a; 39 } 40 41 } 42 void pop(Stack*stack)//吐 43 { 44 if(isempty(stack)){ 45 return; 46 }else{ 47 stack->top--; 48 } 49 } 50 bool isleft(char a){ 51 return (a=='(')||(a=='['); 52 } 53 bool isright(char a){ 54 return (a==']')||(a==')'); 55 } 56 bool juge(char a,char b){ 57 return (a=='('&&b==')')||(a=='['&&b==']'); 58 } 59 int main(){ 60 Stack stack; 61 init(&stack); 62 char str[100]; 63 cin>>str; 64 int len=strlen(str); 65 for(int i=0;i<len;i++){ 66 if(isleft(str[i])){ 67 push(&stack,str[i]); 68 }else { 69 if(isright(str[i])){ 70 if(!juge(stack.date[stack.top],str[i])){ 71 cout<<"NO"; 72 return 0; 73 } 74 pop(&stack); 75 } 76 } 77 } 78 cout<<"YES"; 79 return 0; 80 } 81 82
转载于:https://www.cnblogs.com/swust-wangyf/p/6725196.html
括号匹配问题(0962)相关推荐
- [JS][编程题]括号匹配
括号匹配 题目来源:牛客网 题目链接:括号匹配 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M 题目描述 给定一个只包含括号的字符串,判断字符串是否有效.其 ...
- c语言括号匹配的检验,检验括号匹配的算法
用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...
- 栈 -- 顺序栈、链式栈的实现 及其应用(函数栈,表达式求值,括号匹配)
文章目录 实现 顺序栈实现 链式栈实现 应用 函数栈 的应用 表达式求值中 的应用 括号匹配中 的应用 我们使用浏览器的时候经常会用到前进.后退功能. 依次访问完一串页面 a – b – c之后点击后 ...
- P1944 最长括号匹配(栈模拟/DP)
P1944 最长括号匹配 可以直接用栈模拟,把匹配好的标记一下, 最后找到最长的匹配输出即可. 如果是要求最长的长度的题那么只需要求数就行了,没必要把原序列真的按照题意改变 如果要求序列,那么只需要按 ...
- 2.2栈的另一个应用:括号匹配
2.2栈的另一个应用:括号匹配 1.LeetCode官网 美网:https://leetcode.com/ 中文网 :https://leetcode-cn.com/ 英语不咋地,所以选择此处选择中文 ...
- python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配
注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 算法流程 括号匹配情况介绍 我们经常会遇到类似(9-1)*(8+7)/(4-2).print(& ...
- java 括号匹配_java---括号匹配
import java.util.HashMap; import java.util.LinkedList; import java.util.Map; /* *括号匹配 * 1.用栈实现,如果读取字 ...
- (转载)vim括号匹配等跳转技巧
转载于:https://blog.csdn.net/u013408061/article/details/77523318 vim 括号匹配跳转操作: % 跳转到相配对的括号 gD 跳转到局部变量的定 ...
- CCF NOI1113 括号匹配
问题链接:CCF NOI1113 括号匹配. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 给定一个只包含左右括号的合法括号序列,按右括号从左到右的顺序输出每一对配对的括号出 ...
最新文章
- oracle cpu分配,CPU 分配 - Oracle VM Server for SPARC 2.0 管理指南
- Vue(五)Vue规范
- 微软批量许可 开放许可区别_网络漫画因开放许可而适用于动画
- Java 求一段代码运行所需要的时间——模板方法设计模式
- “陆奇争夺战”:江湖传言,得陆奇者得AI天下。
- Python接口自动化之使用requests库发送http请求
- vscode如何设置大小写转换的快捷键
- Android JTT 808-2011 道路运输车辆卫星定位系统终端通讯协议及数据格式
- 搜索与问答——【NeurIPS 2021】BEIR:信息检索模型零样本评估的异构基准
- 再见2022,你好2023
- 【SCIR笔记】Transformer及其变种
- 属于python语言中合法的二进制整数是_以下选项属于 Python 整数类型的是( )
- JAVAFX窗口设置阴影效果
- PHP 门面设计模式
- 密码找回,验证码绕过漏洞详解
- java 数字翻译成英文_java 英文翻译成数字
- 移动聊天工具Kakao要开网络银行 牌照有望下月到手
- 使用Charles抓包配置
- 有关powerdesinger中灰色数据无法修改的问题
- 数字化+智能化,低代码平台助力能源行业创新赋能
热门文章
- 技术讨论 | 一次尚未完成的薅羊毛行动
- 万变不离其宗之海量数据下的算法问题处理思路
- java 线程可见性,Java多线程之内存可见性
- ubuntu16.04版本 the system is running in low-graphics mode
- docker mysql 不稳定_docker 的 mysql 容器运行一段时间后崩溃
- 服务器是什么系统_为什么视频监控系统搭建,要使用流媒体服务器做视频分发?...
- BZOJ-1013-球形空间产生器sphere
- 纪念品分组pascal程序
- java rabbitmq 绑定_RabbitMQ:交换,队列和绑定 - 谁设置了什么?
- mysql gbk支持_mysql如何支持gbk编码