栈算法之【有效括号】

目录

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();
    }
}
相关推荐
fly-phantomWing1 小时前
Maven的安装与配置的详细步骤
java·后端·maven·intellij-idea
2401_841495644 小时前
【数据结构】红黑树的基本操作
java·数据结构·c++·python·算法·红黑树·二叉搜索树
西猫雷婶4 小时前
random.shuffle()函数随机打乱数据
开发语言·pytorch·python·学习·算法·线性回归·numpy
学编程的小鬼4 小时前
SpringBoot 自动装配原理剖析
java·spring boot·后端
小李独爱秋4 小时前
机器学习中的聚类理论与K-means算法详解
人工智能·算法·机器学习·支持向量机·kmeans·聚类
@@神农5 小时前
maven的概述以及在mac安装配置
java·macos·maven
杜子不疼.5 小时前
【C++】玩转模板:进阶之路
java·开发语言·c++
夜晚中的人海6 小时前
【C++】异常介绍
android·java·c++
Le1Yu6 小时前
2025-9-28学习笔记
java·笔记·学习
小欣加油6 小时前
leetcode 1863 找出所有子集的异或总和再求和
c++·算法·leetcode·职场和发展·深度优先