作者:渴望力量的土狗

博客主页:渴望力量的土狗的博客主页

专栏:手把手带你刷牛客

工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器——牛客网

点击免费注册和我一起刷题吧

目录

前言:

题目描述:

算法思想及解析:

完整代码实现:


前言:

括号匹配问题是经典中的经典,是学习栈的经典例题,今天就再解剖一下这一经典例题,且看下文!

利用LeetCode的经典题目,详细揭开括号匹配问题的神秘面纱。

题目链接:有效的括号

题目描述:

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入: “()”
输出: true

示例 2:

输入: “()[]{}”
输出: true

示例 3:

输入: “(]”
输出: false

算法思想及解析:

注意这一段代码:

括号一定是匹配的,要不然是会出错的。

还有别忘记再判断栈是否为空了

完整代码实现:

class Solution {public boolean isValid(String s) {Stack<Character>stack=new Stack<>();for(int i=0;i<s.length();i++){char ch=s.charAt(i);if(ch=='('||ch=='['||ch=='{'){//左括号入栈stack.push(ch);}else{          //右括号匹配则出栈,不匹配就是falseif(!stack.empty()&&stack.peek().equals(stackOf(ch))){stack.pop();}else{return false;}}}if(stack.empty()){return true;}else{return false;}}public char stackOf(char ch){if(ch==')')return '(';if(ch==']')return '[';return '{';}
}

代码调试无误:

经典括号匹配问题——你真的明白了吗?相关推荐

  1. 快速解决工作中遇到经典的括号匹配问题

    问题来源:从缓存中取出的数据没有空格和换行,很难阅读,但又找不到像JSON一样的在线格式化工具.灵机一动,自己写了一个小程序将其格式化. 一.先看效果 1.原始数据长这样,难以阅读 MemCached ...

  2. P1944 最长括号匹配(栈模拟/DP)

    P1944 最长括号匹配 可以直接用栈模拟,把匹配好的标记一下, 最后找到最长的匹配输出即可. 如果是要求最长的长度的题那么只需要求数就行了,没必要把原序列真的按照题意改变 如果要求序列,那么只需要按 ...

  3. dp括号匹配 网易面试题_面试题:大括号验证

    dp括号匹配 网易面试题 这是较容易的编码任务之一,但是您仍然可以在一些初步的技术筛选中达到目标. 问题看起来像这样: 给定仅包含字符'(' , ')' , '{' , '}' , '['和']'的字 ...

  4. 栈——括号匹配(洛谷 Uva673)

    题目选自洛谷Uva673 括号匹配是和栈有关的经典算法问题 每次入栈的时候判断栈的顶部是不是这个符号的另一半,如果是就pop并且这个符号也不入栈,如果不是就入栈.最后判断栈是否为空,如果为空,说明正确 ...

  5. 括号匹配问题(C++、堆栈)

    原文地址:http://www.cppblog.com/GUO/archive/2010/09/12/126483.html /* 括号匹配问题,比较经典,利用堆栈来实现(摘自internet)1. ...

  6. [ACM_NYOJ_15]括号匹配(二)

    括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[", ...

  7. 【区间dp】uva10003+ uva 1626 括号匹配问题 【有空自己记忆化写一下!!!】

    讲道理,其实我还不是太懂,这个题看到了两种写法 之前大概想的差不多,要这样实现呀: 常规写法,大概n--3 递归写法,稍微好理解一点 好了,接下来自从看了liuchuo的博客我要变身玛丽苏橙色了 题目 ...

  8. python括号匹配o(1)复杂度_Python面试题:使用栈处理括号匹配问题

    括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括 ...

  9. [JS][编程题]括号匹配

    括号匹配 题目来源:牛客网 题目链接:括号匹配 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M 题目描述 给定一个只包含括号的字符串,判断字符串是否有效.其 ...

  10. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

最新文章

  1. SQL 语句转换格式函数Cast、Convert
  2. CentOS7——vi编辑保存
  3. 成功解决pandas.core.indexing.IndexingError: Too many indexers
  4. 【链表】BZOJ1588: [HNOI2002]营业额统计
  5. 报文交换与分组交换例题
  6. [Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]
  7. promise.all_所有您需要了解的Promise.all
  8. Hibernate映射关系之多对多
  9. Poj1995--Raising Modulo Numbers(快速幂)
  10. c语言连续非递减子序列,最长非递减子序列的应用
  11. txt转excel的工具
  12. 路由器设置虚拟服务器王者人生,王者人生位置修改 | 手游网游页游攻略大全
  13. stm32毕业设计 单片机智能温控风扇
  14. python识别手写数字knn_手写数字识别以及Python sklearn KNN实现
  15. office 论文 页码_word如何设置毕业论文页码
  16. 决斗吧4G LTE:联发科helio步步紧逼,高通裁员步步惊心---国际电子商情
  17. IDEA 设置单行注释格式化时不换行
  18. Spring核心机制IoC与AoP梳理
  19. C++静态成员和非静态成员的区别
  20. RocketMq客户端日志参数设置

热门文章

  1. 关于清理系统lj.bat的问题
  2. 一级域名、二级域名 cookie
  3. go import几种用法
  4. android 应用市场 审核速度,安卓市场上传APP软件要多长时间审核?
  5. Windows10实用技巧-固定快捷方式到磁贴菜单方式
  6. 吴闲云——煮酒探西游
  7. EMACS 使用手册
  8. Qt开发,应用程序错误,应用程序无法正常启动0xc000007b
  9. 获取中国票房网的五年间年度票房的数据信息(初学者完整代码)
  10. 前端克隆数据 --JS 深浅拷贝