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

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

前言:

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

利用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. }

代码调试无误:


目录
打赏
0
0
0
0
2
分享
相关文章
|
9月前
|
C++初阶学习第十一弹——探索STL奥秘(六)——深度刨析list的用法和核心点
C++初阶学习第十一弹——探索STL奥秘(六)——深度刨析list的用法和核心点
74 7
|
10月前
|
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(二)
我们可以通过创建并定义符号常量NUMBER,来作为判断是否胜利的标准。如三子棋中,令NUMBER为3,则这八个方向中有任意一个方向达成3子连珠,则连珠的这个棋子所代表的玩家获胜。
95 1
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(一)
三子棋游戏设计的核心是对二维数组的把握和运用。
123 1
【数据结构与算法 经典例题】括号匹配问题
【数据结构与算法 经典例题】括号匹配问题
|
9月前
|
力扣经典150题解析之三十四:有效的数独
力扣经典150题解析之三十四:有效的数独
72 0
|
10月前
|
数据结构与算法⑧(第三章_上)栈的概念和实现(力扣:20. 有效的括号)
数据结构与算法⑧(第三章_上)栈的概念和实现(力扣:20. 有效的括号)
41 0
C语言数组第十课---------------三子棋-------数组经典练手题
C语言数组第十课---------------三子棋-------数组经典练手题
【数据结构与算法篇】栈与队列(详解)附加Leetcode经典笔试题
【数据结构与算法篇】栈与队列(详解)附加Leetcode经典笔试题
81 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等