栈算法之【有效括号】

目录

LeetCode-20题


LeetCode-20题

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

有效字符串需满足:

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

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

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

java 复制代码
class Solution {
    public boolean isValid(String s) {
        // check
        if (s == null || s.length() < 2)
            return false;
        
        // map的key表示左括号,value表示右括号
        Map<Character, Character> cache = new HashMap<>();
        cache.put('(', ')');
        cache.put('{', '}');
        cache.put('[', ']');
        
        // 借助LinkedList实现的栈
        LinkedList<Character> stack = new LinkedList<>();
        for (int i = 0; i < s.length(); i++) {
            char curr = s.charAt(i);
            if (cache.containsKey(curr)) {
                // 如果是左括号,就将其对应的右括号入栈
                stack.push(cache.get(curr));
            } else {
                // 如果是右括号
                if (!stack.isEmpty() && stack.peek() == curr) {
                    // 此时栈不为空,且栈顶元素就是当前的右括号,执行出栈操作
                    stack.pop();
                } else {
                    return false;
                }
            }
        }
        
        // 此时栈空了就表示s是有效括号
        return stack.isEmpty();
    }
}
相关推荐
君义_noip4 分钟前
信息学奥赛一本通 1615:【例 1】序列的第 k 个数
c++·算法·信息学奥赛·csp-s
ホロHoro4 分钟前
数据结构非线性部分(1)
java·数据结构·算法
Blossom.1187 分钟前
大模型推理优化实战:连续批处理与PagedAttention性能提升300%
大数据·人工智能·python·神经网络·算法·机器学习·php
沉下去,苦磨练!16 分钟前
实现二维数组反转
java·数据结构·算法
bybitq23 分钟前
Leetcode-3780-Python
python·算法·leetcode
桦说编程24 分钟前
实现一个简单的并发度控制执行器
java·后端·性能优化
如何原谅奋力过但无声24 分钟前
【力扣-Python-75】颜色分类(middle)
python·算法·leetcode
玖剹26 分钟前
哈希表相关题目
数据结构·c++·算法·leetcode·哈希算法·散列表
Spring AI学习33 分钟前
Spring AI深度解析(11/50):异常处理与容错机制实战
java·人工智能·spring
laocooon52385788638 分钟前
相对名次算法的处理python
开发语言·python·算法