元旦三天假,闲着没事干,就想着复习一下学数据结构时的那些算法吧。本来是想用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;        }    }
http://www.cnblogs.com/onepiece_wang/archive/2012/01/01/2309535.html

转载于:https://www.cnblogs.com/sjqq/p/8717503.html

数据结构算法——判断表达式中的括号是否匹配相关推荐

  1. 判断字符串中的括号是否匹配-C语言

    判断字符串中的括号是否匹配-C语言 递归实现: 先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配-- #include <stdio.h> #include <s ...

  2. 判断字符串中的括号是否匹配——c和c++实现

    判断字符串中的括号是否匹配 递归实现:  先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配--  代码如下: #include <stdio.h> #include & ...

  3. 栈的应用-判断表达式中括弧是否匹配(()、[]、{}三类括弧)

    [问题描述] 利用栈的基本操作,完成表达式括弧匹配的检测.(假设表达式中只有().[].{}三类括弧) [输入形式] 输入若干个表达式(字符串形式).(提示:使用scanf("%s" ...

  4. Stack应用 - 数学表达式(Balanced parentheses)括号完全匹配

    概念 数学表达式常常包含括号,如何确保正确的括号嵌套,有很多算法可以实现.今天介绍一种较为简单的算法,主要用到Python中Stack(堆栈)的概念. 实用list基础数据类型实现栈.众所周知,栈的主 ...

  5. 利用匈牙利算法Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES...

    首先介绍一下题意:已知,有N个学生和P门课程,每个学生可以选0门,1门或者多门课程,要求在N个学生中选出P个学生使得这P个学生与P门课程一一对应. 这个问题既可以利用最大流算法解决也可以用匈牙利算法解 ...

  6. 有趣的算法——判断空间中球体和长方体是否相交

    二维空间圆形与矩形是否相交判断 设c为矩形中心,h为矩形半长度,p为圆心,r为半径.方法是计算圆心与矩形的最短距离 u,若 u 的长度小于 r 则两者相交. 首先利用绝对值把 p - c 转移到第一象 ...

  7. python括号算法,在Python中生成括号模型列表的算法

    我正在尝试创建一个简单的递归函数,它将在 Python中生成嵌套列表的列表.最终结果将代表单个淘汰赛锦标赛.我希望创建这样的列表可以让我轻松生成我需要的东西.这将在以后用于为锦标赛比赛创建模型. 所以 ...

  8. K:括号分隔符匹配问题

    相关介绍:  括号分隔符匹配问题是指,判断所输入的字符串表达式中的括号是否匹配的问题,例如1+(12+2)*(1+2)便是一个括号分隔符匹配的表达式,而(12+1)*4+(12/2]就是一个括号分隔符 ...

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

    实验题目: 给定字符串,仅包含'(',')','{','}','[',']'六种字符,判断括号是否匹配 匹配规则如下 每一个左括号必须和相同类型的右括号匹配 左括号必须以正确的顺序闭合 空字符串也认为 ...

最新文章

  1. jar包反编译成源代码_IntelliJ IDEA 如何设置自动下载源代码和文档
  2. 创建Unicode格式的INI文件
  3. 支撑日活百万用户的高并发系统,应该如何设计其数据库架构?
  4. python接入excel_使用python将excel数据导入数据库过程详解
  5. python 编码声明位置,python中的编码声明
  6. python中什么最重要_Python 3中被忽视了的三大重要功能
  7. 26、Windows API Shell编程(2)
  8. .aspx IIS发布404.17时候的问题
  9. 2012网页设计趋势(上)
  10. SQL Server 默认跟踪应用4 -- 检测日志文件自动增长
  11. 电信宽带连接不上无线可连接服务器,电信宽带wifi连不上网的解决方法
  12. ssm实现记住账号密码(cookie)
  13. Qt学习笔记(二十七):QLabel 的常用方法
  14. DIY 3D打印机——【有啥用啥版】
  15. Maven中央仓库配置文件
  16. opencv环境配置(matlab)
  17. HTTP代理关闭还是自动的呢?
  18. 用heapster实现HPA
  19. 科普:什么是零知识证明?与区块链的关系?
  20. 服务器流式响应,HttpClient在收到服务器响应后无法停止流式传输

热门文章

  1. 美团在Redis上踩过的一些坑-4.redis内存使用优化
  2. 【字符集UTF8】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题
  3. JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域
  4. Oracle 11g服务端的安装和配置
  5. ubuntu部署git
  6. Linux文件atime ctime mtime
  7. 20180429 xlVBA套打单据自适应列宽
  8. Java中泛型的使用场景
  9. C# BeginInvoke和EndInvoke方法
  10. Android官方文章翻译之管理设备苏醒状态(Managing Device Awake State)(二)