栈

有效的括号

简单#20Java时间 O(n)空间 O(n)

题目要做什么

字符串只包含 ()、[]、{}。判断每个右括号是否由同类型的左括号正确匹配,且嵌套顺序正确。

题目示例输入s = "([]){}"
题目示例输出true

01 为什么这样做

遇到左括号时,把它期望的右括号入栈;遇到右括号时,检查它是否等于栈顶。最后栈必须为空。

始终成立的条件

栈从底到顶保存当前尚未关闭的括号所期望的右括号。

02 看见算法执行

动画与代码同步

修改输入,播放自己的例子

当前使用题目示例
修改输入会改变执行过程;预期输出用于核对结果。
数组 / nums步骤 1
执行状态
本次演示输出播放到最后查看

Solution.java参考解法
1class Solution {2    public boolean isValid(String s) {3        Deque<Character> stack = new ArrayDeque<>();4        for (char c : s.toCharArray()) {5            if (c == '(') stack.push(')');6            else if (c == '[') stack.push(']');7            else if (c == '{') stack.push('}');8            else if (stack.isEmpty() || stack.pop() != c) return false;9        }10        return stack.isEmpty();11    }12}

键盘控制:A 后退 · D 前进

编程练习

↑↓ 选择↵ 打开Pagefind 全文检索