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

简介: 经典括号匹配问题——你真的明白了吗?

前言:

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

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

题目链接:有效的括号

题目描述:

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入: “()”

输出: true

示例 2:

输入: “()[]{}”

输出: true

示例 3:

输入: “(]”

输出: false

算法思想及解析:

注意这一段代码:

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

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

完整代码实现:

1. class Solution {
2. public boolean isValid(String s) {
3. 
4.             Stack<Character>stack=new Stack<>();
5. 
6. for(int i=0;i<s.length();i++){
7. char ch=s.charAt(i);
8. if(ch=='('||ch=='['||ch=='{'){//左括号入栈
9.                     stack.push(ch);
10.                 }else{          //右括号匹配则出栈,不匹配就是false
11. 
12. if(!stack.empty()&&stack.peek().equals(stackOf(ch))){
13. 
14.                     stack.pop();
15. 
16.                 }else{
17. return false;
18.                 }
19. 
20. 
21.                 }
22. 
23.             }
24. 
25. if(stack.empty()){
26. return true;
27.             }else{
28. return false;
29.             }
30.     }
31. 
32. public char stackOf(char ch){
33. if(ch==')')return '(';
34. if(ch==']')return '[';
35. return '{';
36. 
37.     }
38. }

代码调试无误:


相关文章
|
6月前
|
自然语言处理 编译器
编译原理复习五:属性文法与三地址码的生成(附题目与答案 超详细)
编译原理复习五:属性文法与三地址码的生成(附题目与答案 超详细)
459 0
|
6月前
|
Java
【汉诺塔】经典递归问题(Java实现)图文并茂讲解
【汉诺塔】经典递归问题(Java实现)图文并茂讲解
|
5月前
|
人工智能 算法 BI
一篇文章讲明白KMP算法(俗称看毛片算法)
一篇文章讲明白KMP算法(俗称看毛片算法)
55 0
|
5月前
|
算法 C语言 计算机视觉
【数据结构与算法 经典例题】括号匹配问题
【数据结构与算法 经典例题】括号匹配问题
|
6月前
|
C语言
汉诺塔————经典递归问题(C语言实现)
汉诺塔————经典递归问题(C语言实现)
127 0
|
6月前
编译原理复习六:依赖图、注释语法树上节点的求值讲解(附题目与答案 超详细)
编译原理复习六:依赖图、注释语法树上节点的求值讲解(附题目与答案 超详细)
266 0
初阶函数递归经典例题(1)
初阶函数递归经典例题(1)
|
程序员 测试技术 C语言
【C语言经典例题】——程序员必须会的经典基础例题(三)
【C语言经典例题】——程序员必须会的经典基础例题(三)
109 0
学完链表,不去找几个经典例题巩固一下知识?链表的五大OJ经典例题,你会吗?不妨来看一看(知识剖析+图形理解)(下)
学完链表,不去找几个经典例题巩固一下知识?链表的五大OJ经典例题,你会吗?不妨来看一看(知识剖析+图形理解)(下)
106 0
学完链表,不去找几个经典例题巩固一下知识?链表的五大OJ经典例题,你会吗?不妨来看一看(知识剖析+图形理解)(下)
学完链表,不去找几个经典例题巩固一下知识?链表的五大OJ经典例题,你会吗?不妨来看一看(知识剖析+图形理解)(上)
学完链表,不去找几个经典例题巩固一下知识?链表的五大OJ经典例题,你会吗?不妨来看一看(知识剖析+图形理解)
127 0
学完链表,不去找几个经典例题巩固一下知识?链表的五大OJ经典例题,你会吗?不妨来看一看(知识剖析+图形理解)(上)