数据结构算法——判断表达式中的括号是否匹配
元旦三天假,闲着没事干,就想着复习一下学数据结构时的那些算法吧。本来是想用C语言来写的,无奈啊,三四年没用C了,基本上忘光光,还是用C#来写吧,而且.Net基类库中已经有了栈、队列等的实现,直接拿来用用吧。第一个算法是用来判断表达式中的括号(仅限小括号)是否匹配的。(其实哥很想找个妹子出去约会啊,不想复习神马算法啊,可惜的是找不到妹子,哭死)
对于表达式中的括号是否匹配,不能仅仅通过统计左括号'('出现的次数和右括号')'出现的次数是否相等来实现,“a*)b+c(”这样的表达式中的括号显然是不匹配的。检验括号是否匹配最常见的方法是借助于栈这种数据结构,从左到右逐个字符扫描表达式,碰到左括号"("则压入栈中(push),碰到右括号")"则弹出栈顶元素(pop)如果栈为空,则匹配失败。字符串扫描完成后,如果栈为空,则匹配成功,否则匹配失败。代码如下:
public static class AlgorithmAboutStack { /// <summary> /// 此方法用于判断输入的表达式中的括号是否匹配,即左括号的个数与右括号是否相等 /// </summary> /// <param name="expression">输入的表达式</param> /// <returns></returns> public static bool IsBracketMatch(string expression) { if (string.IsNullOrEmpty(expression)) { throw new ArgumentException(); } Stack<char> leftBrackets = new Stack<char>(); foreach (char c in expression) { if (c=='(') { leftBrackets.Push(c); } if (c==')') { if (leftBrackets.Count==0) { return false; } else { leftBrackets.Pop(); } } } return leftBrackets.Count == 0; } }
转载于:https://www.cnblogs.com/sjqq/p/8717503.html
数据结构算法——判断表达式中的括号是否匹配相关推荐
- 判断字符串中的括号是否匹配-C语言
判断字符串中的括号是否匹配-C语言 递归实现: 先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配-- #include <stdio.h> #include <s ...
- 判断字符串中的括号是否匹配——c和c++实现
判断字符串中的括号是否匹配 递归实现: 先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配-- 代码如下: #include <stdio.h> #include & ...
- 栈的应用-判断表达式中括弧是否匹配(()、[]、{}三类括弧)
[问题描述] 利用栈的基本操作,完成表达式括弧匹配的检测.(假设表达式中只有().[].{}三类括弧) [输入形式] 输入若干个表达式(字符串形式).(提示:使用scanf("%s" ...
- Stack应用 - 数学表达式(Balanced parentheses)括号完全匹配
概念 数学表达式常常包含括号,如何确保正确的括号嵌套,有很多算法可以实现.今天介绍一种较为简单的算法,主要用到Python中Stack(堆栈)的概念. 实用list基础数据类型实现栈.众所周知,栈的主 ...
- 利用匈牙利算法Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES...
首先介绍一下题意:已知,有N个学生和P门课程,每个学生可以选0门,1门或者多门课程,要求在N个学生中选出P个学生使得这P个学生与P门课程一一对应. 这个问题既可以利用最大流算法解决也可以用匈牙利算法解 ...
- 有趣的算法——判断空间中球体和长方体是否相交
二维空间圆形与矩形是否相交判断 设c为矩形中心,h为矩形半长度,p为圆心,r为半径.方法是计算圆心与矩形的最短距离 u,若 u 的长度小于 r 则两者相交. 首先利用绝对值把 p - c 转移到第一象 ...
- python括号算法,在Python中生成括号模型列表的算法
我正在尝试创建一个简单的递归函数,它将在 Python中生成嵌套列表的列表.最终结果将代表单个淘汰赛锦标赛.我希望创建这样的列表可以让我轻松生成我需要的东西.这将在以后用于为锦标赛比赛创建模型. 所以 ...
- K:括号分隔符匹配问题
相关介绍: 括号分隔符匹配问题是指,判断所输入的字符串表达式中的括号是否匹配的问题,例如1+(12+2)*(1+2)便是一个括号分隔符匹配的表达式,而(12+1)*4+(12/2]就是一个括号分隔符 ...
- 数据结构 判断括号是否匹配
实验题目: 给定字符串,仅包含'(',')','{','}','[',']'六种字符,判断括号是否匹配 匹配规则如下 每一个左括号必须和相同类型的右括号匹配 左括号必须以正确的顺序闭合 空字符串也认为 ...
最新文章
- jar包反编译成源代码_IntelliJ IDEA 如何设置自动下载源代码和文档
- 创建Unicode格式的INI文件
- 支撑日活百万用户的高并发系统,应该如何设计其数据库架构?
- python接入excel_使用python将excel数据导入数据库过程详解
- python 编码声明位置,python中的编码声明
- python中什么最重要_Python 3中被忽视了的三大重要功能
- 26、Windows API Shell编程(2)
- .aspx IIS发布404.17时候的问题
- 2012网页设计趋势(上)
- SQL Server 默认跟踪应用4 -- 检测日志文件自动增长
- 电信宽带连接不上无线可连接服务器,电信宽带wifi连不上网的解决方法
- ssm实现记住账号密码(cookie)
- Qt学习笔记(二十七):QLabel 的常用方法
- DIY 3D打印机——【有啥用啥版】
- Maven中央仓库配置文件
- opencv环境配置(matlab)
- HTTP代理关闭还是自动的呢?
- 用heapster实现HPA
- 科普:什么是零知识证明?与区块链的关系?
- 服务器流式响应,HttpClient在收到服务器响应后无法停止流式传输
热门文章
- 美团在Redis上踩过的一些坑-4.redis内存使用优化
- 【字符集UTF8】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题
- JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域
- Oracle 11g服务端的安装和配置
- ubuntu部署git
- Linux文件atime ctime mtime
- 20180429 xlVBA套打单据自适应列宽
- Java中泛型的使用场景
- C# BeginInvoke和EndInvoke方法
- Android官方文章翻译之管理设备苏醒状态(Managing Device Awake State)(二)