
20.有效的括号
发布日期:2021-05-09 06:57:34
浏览次数:16
分类:博客文章
本文共 1759 字,大约阅读时间需要 5 分钟。
20.有效的括号
目录
题目
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
思路
运用栈的思想,将左半边的符号压入栈中,只要遇到右半边与之对应的符号,就将其出栈。最终,只要两边完全抵消,就表明括号都是一一对应的,也就是有效的。
- 初始化栈stack
- 依次处理表达式的每个括号。
- 如果遇到左半边括号,推入栈中,稍后处理。
- 如果遇到右半边的括号,检查栈顶的元素是否为对应的左半边括号,如果是,就弹出栈,不是的话,直接无效。
- 最后的最后,如果栈中还有残留,说明表达式存在无效的括号。
代码实现
package leetcode.pac20;import java.util.HashMap;import java.util.Stack;/** * @auther Summerday */public class ValidBrackets { public static void main(String[] args) { ValidBrackets validBrackets = new ValidBrackets(); String testString = "((("; System.out.println(validBrackets.isValid(testString)); } private HashMapmappings; public ValidBrackets() { this.mappings = new HashMap (); this.mappings.put(')', '('); this.mappings.put(']', '['); this.mappings.put('}', '{'); } public boolean isValid(String s) { //初始化栈 Stack stack = new Stack (); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); //如果遇到右半边的括号的话 if (this.mappings.containsKey(c)) { //取栈顶元素,如果栈为空,给栈顶元素暂时赋值,不然后面会出现 //EmptyStackException char topElement = stack.empty() ? '#' : stack.pop(); //栈顶元素和匹配值不相符,直接返回错误 if (topElement != this.mappings.get(c)) { return false; } } else { //如果没有遇到右半边的括号,将左半边入栈 stack.push(c); } } //两边完全抵消,即为有效符号 return stack.isEmpty(); }}
复杂度分析
- 时间复杂度:O(n),因为每次只遍历字符串中的一个字符并在栈上进行O(1)的推入和推出操作。n为字符串的字符数量。
- 空间复杂度:O(n),最糟糕的情况,就是全部都是左半边括号,一直往里推,最终把所有的都推进去。同样地,n为左半边的符号的最大数量。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年05月11日 08时07分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Elasticsearch面试题
2025-03-29
Hibernate二级缓存配置
2025-03-29
element 如何使用自定义icon图标
2025-03-29
element-plus修改主题颜色
2025-03-29
18 个一线工作中常用 Shell 脚本【实用版】
2025-03-29
element-ui:el-input输入数字-整数和小数
2025-03-29
ElementUI-el-progress改变进度条颜色跟文字样式
2025-03-29
ELK原理与介绍(转)
2025-03-29
ELK学习笔记(三)单台服务器多节点部署
2025-03-29
ELK应用日志收集实战
2025-03-29
elTable火狐浏览器换行
2025-03-29
15个Python数据处理技巧(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-29
0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏)
2025-03-29
100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了
2025-03-29
10个程序员可以接私活的平台
2025-03-29