描述

假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。

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)相关推荐

  1. [JS][编程题]括号匹配

    括号匹配 题目来源:牛客网 题目链接:括号匹配 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M 题目描述 给定一个只包含括号的字符串,判断字符串是否有效.其 ...

  2. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

  3. 栈 -- 顺序栈、链式栈的实现 及其应用(函数栈,表达式求值,括号匹配)

    文章目录 实现 顺序栈实现 链式栈实现 应用 函数栈 的应用 表达式求值中 的应用 括号匹配中 的应用 我们使用浏览器的时候经常会用到前进.后退功能. 依次访问完一串页面 a – b – c之后点击后 ...

  4. P1944 最长括号匹配(栈模拟/DP)

    P1944 最长括号匹配 可以直接用栈模拟,把匹配好的标记一下, 最后找到最长的匹配输出即可. 如果是要求最长的长度的题那么只需要求数就行了,没必要把原序列真的按照题意改变 如果要求序列,那么只需要按 ...

  5. 2.2栈的另一个应用:括号匹配

    2.2栈的另一个应用:括号匹配 1.LeetCode官网 美网:https://leetcode.com/ 中文网 :https://leetcode-cn.com/ 英语不咋地,所以选择此处选择中文 ...

  6. python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配

    注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 算法流程 括号匹配情况介绍 我们经常会遇到类似(9-1)*(8+7)/(4-2).print(& ...

  7. java 括号匹配_java---括号匹配

    import java.util.HashMap; import java.util.LinkedList; import java.util.Map; /* *括号匹配 * 1.用栈实现,如果读取字 ...

  8. (转载)vim括号匹配等跳转技巧

    转载于:https://blog.csdn.net/u013408061/article/details/77523318 vim 括号匹配跳转操作: % 跳转到相配对的括号 gD 跳转到局部变量的定 ...

  9. CCF NOI1113 括号匹配

    问题链接:CCF NOI1113 括号匹配. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 给定一个只包含左右括号的合法括号序列,按右括号从左到右的顺序输出每一对配对的括号出 ...

最新文章

  1. oracle cpu分配,CPU 分配 - Oracle VM Server for SPARC 2.0 管理指南
  2. Vue(五)Vue规范
  3. 微软批量许可 开放许可区别_网络漫画因开放许可而适用于动画
  4. Java 求一段代码运行所需要的时间——模板方法设计模式
  5. “陆奇争夺战”:江湖传言,得陆奇者得AI天下。
  6. Python接口自动化之使用requests库发送http请求
  7. vscode如何设置大小写转换的快捷键
  8. Android JTT 808-2011 道路运输车辆卫星定位系统终端通讯协议及数据格式
  9. 搜索与问答——【NeurIPS 2021】BEIR:信息检索模型零样本评估的异构基准
  10. 再见2022,你好2023
  11. 【SCIR笔记】Transformer及其变种
  12. 属于python语言中合法的二进制整数是_以下选项属于 Python 整数类型的是( )
  13. JAVAFX窗口设置阴影效果
  14. PHP 门面设计模式
  15. 密码找回,验证码绕过漏洞详解
  16. java 数字翻译成英文_java 英文翻译成数字
  17. 移动聊天工具Kakao要开网络银行 牌照有望下月到手
  18. 使用Charles抓包配置
  19. 有关powerdesinger中灰色数据无法修改的问题
  20. 数字化+智能化,低代码平台助力能源行业创新赋能

热门文章

  1. 技术讨论 | 一次尚未完成的薅羊毛行动
  2. 万变不离其宗之海量数据下的算法问题处理思路
  3. java 线程可见性,Java多线程之内存可见性
  4. ubuntu16.04版本 the system is running in low-graphics mode
  5. docker mysql 不稳定_docker 的 mysql 容器运行一段时间后崩溃
  6. 服务器是什么系统_为什么视频监控系统搭建,要使用流媒体服务器做视频分发?...
  7. BZOJ-1013-球形空间产生器sphere
  8. 纪念品分组pascal程序
  9. java rabbitmq 绑定_RabbitMQ:交换,队列和绑定 - 谁设置了什么?
  10. mysql gbk支持_mysql如何支持gbk编码