一、整体思路

使用栈这种数据结构。

遍历字符串,遇到左括号则入栈,遇到右括号则判断此时的栈顶的括号是否和右括号对应,如果是则 pop 栈顶;如果不是则直接可以判定该字符串中括号不匹配。

二、栗子

#include <stack>
#include <string>
#include <iostream>char leftOf(char c);bool isValid(std::string str)
{std::stack<char> left;for (char c : str){if (c == '(' || c == '{' || c == '[')left.push(c);else // 字符 c 是右括号if (!left.empty() && leftOf(c) == left.top())left.pop();else// 和最近的左括号不匹配return false;}// 是否所有的左括号都被匹配了return left.empty();
}char leftOf(char c)
{if (c == '}')return '{';if (c == ')')return '(';return '[';
}void show(const std::string &str)
{if (isValid(str))std::cout << "合法" << std::endl;elsestd::cout << "不合法" << std::endl;return;
}int main()
{show("{()}");show("{()[]])");return 0;
}
合法
不合法

代码参考:https://zhuanlan.zhihu.com/p/107788052

(SAW:Game Over!)

数据结构与算法 / 编辑器和编译器如何判定括号是否合法相关推荐

  1. 深入理解数据结构和算法

    hi,大家好,我是阿荣,今天分享一些对数据结构和算法精华总结,希望对大家的面试或者工作有一定的帮助: 看完本文可以学到什么 知道哪些数据结构和算法在实际工作中最常用,最重要 理解一些设计上注意事项(经 ...

  2. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  3. 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)

    图 如何存储微博.微信等社交网络中的好友关系?图.实际上,涉及图的算法有很多,也非常复杂,比如图的搜索.最短路径.最小生成树.二分图等等.我们今天聚焦在图存储这一方面,后面会分好几节来依次讲解图相关的 ...

  4. 明翰数据结构与算法笔记V0.8(持续更新)

    文章目录 前言 数据结构 `线性表` `数组` `链表` `栈与队列` [串/字符串] 树 并查集 `二叉树` [二叉排序树/二叉搜索树] `红黑树` 红黑树操作 霍夫曼树 `堆` [大/小]根堆 可 ...

  5. 拿命 3 天肝出来的计算机考研数据结构与算法复习笔记(超详细教程,更新中)

    数据结构与算法 基本概述 数据结构指的是"一组数据的存储结构",算法指的是"操作数据的一组方法". 数据结构是为算法服务的,算法是要作用再特定的数据结构上的. ...

  6. Go语言-数据结构与算法

    go语言之专业数据结构与算法 3.golang实现数组结构 code\ArrayList\ArrayList.go package ArrayListimport ("errors" ...

  7. 【数据结构与算法】第一篇:数据结构

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 STL库的介绍 容器(containers) 算法(algorith ...

  8. 数据结构与算法的思考与历程

    目录 概述 学习数据结构的初衷 什么是算法 数据结构的分类 从逻辑角度分类 从存储结构分类(又称物理结构) 线性表 线性表基本框架 链表与数组的区别 链表 栈与队列 栈与队列基本框架 栈 队列 串 二 ...

  9. 【万字总结】数据结构与算法简述和CS综合,保姆级一文打包

    数据结构与算法简述和CS综述整理.本文非基础的教程,本文会列出大量学习和参考网站.老惯例,一个文章是一个集大成(本文借助了语音输入(PC 版 讯飞输入法)由此加速码字,但仍保持简洁的文风). 数据结构 ...

最新文章

  1. XenApp 6 license导入报错的终极解决方案
  2. 金融系列4《基本指令》
  3. 亚马逊AWS本月第三次出现数据中心断电故障,Coinbase、Slack等受影响
  4. 文件管理服务器数据库,会博通系统的海量数据库管理策略
  5. 记录:SqlParamater要点小结
  6. 使用“另类” Cloud Foundry Gradle插件无需停机
  7. JS中SetTimeOut和SetInterval方法的区别?
  8. php内容模型概念,方便新建各种类型表
  9. 一阶惯性环节如何实现跟踪性能与滤波性能共存(二)
  10. R语言常用的绘图参数
  11. 需求与商业模式分析-6-五个课题
  12. 我的权限控制(JBX + struts + hibernate + ORACLE)
  13. 利用 clip-path 绘制不规则的图形
  14. 如何以软文宣传的方式成功推广洗发水的新产品上市?
  15. 时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)
  16. 绩效辅导面谈中的STAR法则和SPIN
  17. Risk Management and Financial Institution Chapter 2 —— Banks
  18. 什么是通达信接口函数
  19. MySQL多表查询练习2
  20. 好用计算机,六款让你电脑更好用的软件

热门文章

  1. PMBOK项目管理思维导图梳理
  2. WebView点击加载的页面中的按钮时不弹出新窗口以及在加载后执行javascript
  3. 在Linux系统centos上安装RAR
  4. 不积跬步无以至千里[转]
  5. 563. 二叉树的坡度
  6. JS 加强篇!推荐 10 个好用的 TypeScript 的开源项目 YYDS !
  7. linux配置chrony时间同步
  8. 【脚本整理】docker-compose 部署prometheus + grafana
  9. Scala函数作为函数的返回值
  10. jvm最大内存限制多少?