【问题描述】

假设一个表达式由英文字母(小写)、运算符(+、-、*、/)和左右小(圆)括号构成,以“@”作为表达式的结束符。
请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。
假设表达式长度小于255,左圆括号少于20个。

【算法分析】

假设输入的字符串存储在c中(char c[256])。
可以定义一个栈:char s[maxn+1];int top;
用它来存放表达式中从左往右的左圆括号(maxn=20)。

【算法思路】

顺序(从左往右)扫描表达式的每个字符c[i],若是“( ”,则让它进栈;若遇到的是“)”,则让栈顶元素出栈;
当栈发生下溢或当表达式处理完毕而栈非空时,都表示不匹配,返回“NO”;否则表示匹配,返回“YES”。

【代码分析】

#include <cstdio>
#include <cstdlib>
#define maxn 20
using namespace std;
char c[256];
bool judge(char c[256])
{int top=0,i=0;while(c[i]!='@'){if(c[i]=='(') top++;if(c[i]==')'){if(top>0) top--;else return false;}i++;}if(top!=0) return false;//检查栈是否为空,不空则说明有未匹配的括号。else return true;
}
int main ()
{scanf("%s",c);if(judge(c)) printf("YES");else printf("NO");return 0;
}

括号的匹配(表达式的合法性检查)相关推荐

  1. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

  2. 数据结构算法——判断表达式中的括号是否匹配

    元旦三天假,闲着没事干,就想着复习一下学数据结构时的那些算法吧.本来是想用C语言来写的,无奈啊,三四年没用C了,基本上忘光光,还是用C#来写吧,而且.Net基类库中已经有了栈.队列等的实现,直接拿来用 ...

  3. 栈-----括号匹配+表达式计算

    第1题: 算术表达式里面括号是否匹配,如 3+{2(5*3-1)-[1+(3-5)]}匹配,3+ 2(5*3-1)-[1+(3-5)]} 不匹配. package com.sheepmu.text;i ...

  4. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  5. python 判断括号是否匹配_使用Python实现一个栈判断括号是否平衡

    栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...

  6. python正则匹配表达式(1)

    python也和其他语言一样也提供了丰富的正则匹配表达式,在爬虫中解析服务器的内容时也经常需要用到,python的正则匹配为re库,其官方文档链接为: Lib/re.py 在官方文档中特别说明正则匹配 ...

  7. mysql表进行合法性检查_固定网格填报

    填报表往往需要在客户端页面输入时进行合法性检查,如检查输入是否为数字或符合规定的格式等.润乾报表填报表通过两种方式实现合法性检查: 第一种,通过设置单元格的填报数据类型自动实现合法性检查. 第二种,通 ...

  8. 数据结构上机实践第五周项目3 - 括号的匹配

    括号的匹配 本次实践将用到顺序栈的算法库,点击此处参考. 本次实践要求: 假设表达式中允许三种括号:圆括号.方括号和大括号.编写一个算法,判断表达式中的各种左括号是否与右括号匹配.  例如,输入2+( ...

  9. 数据结构括号是否匹配

    2022.10.13数据结构括号是否匹配,这题才开始5组/7组最后10组测试成功. ddd最近我感觉我对前标开窍了一点,课本真是个好东西.欢迎点赞.评论.收藏转发. 数据结构括号是否匹配 任务描述 相 ...

最新文章

  1. 四面阿里看看你都会吗
  2. PHP 设计模式之迭代器模式
  3. 为什么dubbo的调用重试不建议设置成超过1
  4. 将 JAR 转为 EXE – JSMOOTH 的使用教程(第二期)(转载)
  5. JPA JoinColumn vs mappedBy
  6. RabbitMQ管理界面简述_入门试炼_第3篇
  7. 使用DataGrip连接Hive
  8. 双光子荧光成像_在不影响分辨率的情况下,成功将双光子显微镜成像速度提高5倍!...
  9. daily-question-01(前端每日一题01)
  10. mysql:mysql安装及一些配置和图形界面介绍
  11. ASP.NET导入Excel到数据库(SQL)
  12. OpenCV C++安装和配置
  13. c4d打开没反应_野分享:一大波C4D插件的测试以及分享
  14. cs透视源码c语言,CS--GO透视自瞄C++源码 CSGO C++源代码 参考学习!!!(CSGO C++ source code) - 下载 - 搜珍网...
  15. git: Cannot communicate securely with peer: no common encryption algorithm(s)
  16. 工作量与工作历时计算
  17. Codeforces Round #727 (Div. 2)题解A-D
  18. win server 2016 无法安转.net framework 3.5 问题
  19. 如何使用repo管理本地私有仓库
  20. 数字媒体概论——声音

热门文章

  1. LeetCode OJ 113. Path Sum II
  2. android 介绍0
  3. 文件目录遍历的并发算法
  4. inline-block的兼容性问题
  5. 7-68 阶乘计算 (15 分)
  6. 学完计算机还是不懂,如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧...
  7. 弹性碰撞后速度方向_找准模型,快速求解碰撞类问题
  8. python最小值函数_Python3 min() 函数详解 获取多个参数或列表中的最小值
  9. 小白重装系统教程_重装系统教程,小编教你怎么重装win10系统
  10. 日志 php_高性能的PHP日志系统 SeasLog 使用