
20 有效的括号(栈的使用)
发布日期:2021-05-07 21:50:05
浏览次数:22
分类:精选文章
本文共 1542 字,大约阅读时间需要 5 分钟。
为了判断给定的括号字符串是否有效,我们可以使用栈来跟踪括号的匹配情况。栈的基本思想是,每当遇到一个左括号时将其推入栈,遇到右括号时检查栈顶部是否是对应的左括号,如果是则弹出栈,否则字符串无效。遍历完整个字符串后,栈是否为空即可判断字符串是否有效。
思路分析
问题描述:有效字符串需满足左括号必须用相同类型的右括号闭合,且左括号必须以正确的顺序闭合。空字符串可被认为是有效的。
解决思路:使用栈来跟踪括号匹配情况。遍历字符串中的每个字符,如果遇到左括号推入栈,遇到右括号检查栈顶是否是对应的左括号,如果是则弹出栈,否则返回false。最后检查栈是否为空。
代码实现:通过遍历字符串,使用栈结构处理每个字符,确保括号匹配正确。最终判断栈是否为空来确定字符串的有效性。
代码
public class Solution { public static boolean isValid(String s) { if (s.length() == 0) { return true; } Stackstack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '{' || c == '[') { stack.push(c); } else if (c == ')') { if (stack.isEmpty() || stack.peek() != '(') { return false; } stack.pop(); } else if (c == '}') { if (stack.isEmpty() || stack.peek() != '{') { return false; } stack.pop(); } else if (c == ']') { if (stack.isEmpty() || stack.peek() != '[') { return false; } stack.pop(); } } return stack.isEmpty(); }}
代码解释
空字符串处理:如果输入字符串为空,直接返回true,空字符串被认为是有效的。
初始化栈:使用栈来存储遇到的左括号,栈的作用是帮助我们跟踪每个左括号的位置和类型。
遍历字符串:逐个字符遍历字符串,处理每个字符的类型:
- 左括号('(', '{', '['):将字符推入栈。
- 右括号(')', '}', ']'):检查栈顶是否是对应的左括号,如果是则弹出栈,否则返回false。
最终检查:遍历完字符串后,栈是否为空判断字符串的有效性。如果栈不为空,说明存在未闭合的括号,返回false;栈为空则返回true。
这种方法确保了括号的正确匹配和顺序,能够有效判断字符串的有效性。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月25日 03时05分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2019-03-04
A Guide to Node.js Logging
2019-03-04
HTML 和 CSS 简单实现注册页面
2019-03-04
892 三维形体的表面积(分析)
2019-03-04
875 爱吃香蕉的珂珂(二分查找)
2019-03-04
Dijkstra算法的总结
2019-03-04
Vue实现选项卡功能
2019-03-04
vue中接收后台的图片验证码并显示
2019-03-04
趣谈win10常用快捷键
2019-03-04
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
2019-03-04
JDK 内置的多线程协作工具类的使用场景
2019-03-05
Java 中哪些对象可以获取类对象
2019-03-05
11.2.6 时间值的小数秒
2019-03-05
Redis源码分析(七)--- zipmap压缩图
2019-03-05
自定义Hive Sql Job分析工具
2019-03-05
【MySQL】(九)触发器
2019-03-05
Oracle 11G环境配置
2019-03-05
【Python】(十二)IO 文件处理
2019-03-05