判断有效的括号

题目如下

解题思路

如果字符串的长度不是2的倍数,则必定没有包含完整的括号
需要一个辅助的数据结构 栈
遍历字符串,遇到括号的左半括号,压入栈中,遇到括号的右半括号,判断从栈顶元素是否是所遇到右半括号的左边。是的话,将栈顶元素弹出,进行下一步判断,不是返回false。
这里我们还需要一个保存左半括号和右半括号的关系,需要一个额外的数据结构–哈希表

        //创建一个哈希表 来存储(),[],{}的关系map<char,char> m;        //长度为3m[')'] = '(';m[']'] = '[';m['}'] = '{';

在执行结束后,还需要检查一下,栈内是否还存在元素

完整代码

class Solution {public:bool isValid(string s) {int length = s.size();if(length % 2 != 0){return false;}//创建一个栈数据结构,用来保存左侧的符号stack<char> st;//创建一个哈希表 来存储(),[],{}的关系map<char,char> m;        //长度为3m[')'] = '(';m[']'] = '[';m['}'] = '{';for(int i = 0;i < length; ++i){//判断此字符是否是括号的左侧部分//如果是 压入堆栈中if(s[i] == '{' || s[i] == '(' ||s[i] == '[' )   {st.push(s[i]);}else{if(st.empty()){return false;}//如果当前位置的字符元素在哈希表中的映射 与 栈顶元素不同if(m[s[i]] != st.top() ){//意味着错误return false;}//相同 弹出栈顶元素,进入下一轮循环else{st.pop();}}}if(st.empty()){return true;}return false;}
};

leetcode 有效的括号相关推荐

  1. LeetCode 921. 使括号有效的最少添加(栈)

    1. 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...

  2. LeetCode 1111. 有效括号的嵌套深度(奇偶分离)

    1. 题目 有效括号字符串 仅由 "(" 和 ")" 构成,并符合下述几个条件之一: 空字符串 连接,可以记作 AB(A 与 B 连接),其中 A 和 B 都是 ...

  3. 【力扣LeetCode】22 括号生成

    题目描述(难度中) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", &qu ...

  4. LeetCode Algorithm 22. 括号生成

    22. 括号生成 Ideas 这是一道动态规划的题目,关于动态规划的题目我们可以从n比较小的情况下开始逐步分析. 当n=1时,["()"] 当n=2时,["()()&qu ...

  5. LeetCode 算法 856. 括号的分数

    856. 括号的分数 Ideas 遇到括号那基本就是用栈了. 括号的分数会因为深度的增加而成倍增加,所以利用栈的时候需要记录深度. 遇到一个(的时候,将深度+1,并且新的深度得分置为0,遇到一个)的时 ...

  6. LeetCode 20.有效括号

    原题链接 方法一:解题思路,使用栈 +   模拟法:首先遍历将是左括号形式的部分压入栈中.然后对于右括号形式与栈顶元素进行比对,看是否匹配.如果匹配的话删除栈顶元素,不匹配直接返回false.最后栈为 ...

  7. LeetCode 1111. 有效括号的嵌套深度

    1111. 有效括号的嵌套深度 思路:我们只需要把奇数层的 ( 分配给 A,偶数层的 ( 分配给 B 即可 //'(' 时奇数为1,偶数为0 class Solution { public:vecto ...

  8. LeetCode 堆栈队列 —— 括号匹配(20、232、155)

    1. 堆栈(stack) 20,20. Valid Parentheses,括号匹配,堆栈(python 中使用 list 即可实现表示堆栈,list.append:入栈,list.pop():出栈) ...

  9. 2022-3-25 Leetcode 921.使括号有效

    第一版,我还是 too young,too naive class Solution {public:int minAddToMakeValid(string s) {int deep = 0;for ...

  10. LeetCode有效的括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...

最新文章

  1. shell中的函数及脚本调试方法
  2. [小猫学NA]CCNA学习指南第二章笔记
  3. 销售流程图_每天一个流程图制作——销售发货业务流程图-19
  4. uboot,eboot和bootloader的联系
  5. 蓝桥杯第九届省赛JAVA真题----螺旋折线
  6. c# oldb连接_如何使用C#中的OleDbConnection 连接读取Excel?
  7. 【华为云技术分享】机器学习(02)——学习资料链接
  8. uni app 调用网络打印机_uni-app封装一个request请求
  9. TensorFlow、PyTorch 之后,“国产”AI 框架还有没有机会?
  10. Truecrypt隐形操作系统终极方案
  11. GB28181国标协议
  12. 为什么仿宋字体打印出楷体_win7仿宋字体及楷体字体打包下载
  13. PCB邮票孔拼板AD软件制作教程
  14. 8. G1垃圾收集日志
  15. 【精品】机器学习模型可解释的重要及必要性
  16. 帝国CMS灵动标签e:loop
  17. 丅rust是什么意思_rust是什么意思_rust的翻译_音标_读音_用法_例句_爱词霸在线词典...
  18. oscp——Hacker Fest: 2019
  19. 一文读懂「用户行为数据」的采集、分析和应用
  20. RMA直接接收入库Interface导入

热门文章

  1. 云计算laas、paas、saas介绍和分类
  2. SLAM AR 技术与应用
  3. 学习java第14天
  4. 自动驾驶汽车是如何利用高精度地图和高精度定位来导航
  5. Vsan节点报“Power-on Reset”和“Could not open device ‘naa...‘ for probing: Busy”错误处理记录
  6. xtu ACM Eason
  7. 全网搜php,PHP实现中文全文搜索的原理介绍
  8. 地理信息系统GIS基础知识
  9. Red Hat Linux 9.0 网络服务入门
  10. 金昌搜索引擎优化网络推广_金昌网站推广,金昌网站推广平台,金昌企业网站推广-奇秀云AI智能推广系统-奇秀网...