hot100-55有效的括号

一、题目

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

有效字符串:

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

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

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

二、思路

利用「栈」(Stack)来模拟括号的匹配过程,遵循"后进先出"的原则。

1)遇到左括号,直接压入栈中,等待后续匹配。

2)遇到右括号,

检查栈是否为空,没有左括号匹配,则无效。

栈顶的左括号是否能和当前的右括号匹配,不能则无效。

遍历完所有字符后,检查栈是否为空,非空则无效,空则是有效的括号字符串。

三、代码

复制代码
class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for(char c : s.toCharArray()){
            if(c == '(' || c == '[' || c == '{'){
                stack.push(c);
            }else{
                //遇到右括号
                if(stack.isEmpty()){
                    return false;//没有左括号匹配
                }
                char top = stack.pop();
                if((c == ')' && top != '(') ||
                (c == '}' && top != '{') ||
                (c == ']' && top != '[')){
                    return false;//类型不匹配
                }
            }
        }
        return stack.isEmpty();//所有左括号都被匹配
    }
}
相关推荐
Hello:CodeWorld2 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
8Qi84 小时前
LeetCode 516:最长回文子序列
算法·leetcode·职场和发展·动态规划
youngerwang5 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
KaMeidebaby5 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
手写码匠6 小时前
从零实现 Prompt 工程引擎:结构化提示、自动优化与多轮自省体系
人工智能·深度学习·算法·aigc
无限码力6 小时前
阿里算法岗 0530笔试真题 - 多约束条件下的元素匹配统计
算法·阿里笔试真题·阿里机试真题·阿里算法岗笔试
lqqjuly7 小时前
MLA — 多头潜在注意力深度解析
深度学习·神经网络·算法
吴可可1237 小时前
SolidWorks草图转三维DWG技巧
算法
redaijufeng7 小时前
C++雾中风景7:闭包
c++·算法·风景
小欣加油8 小时前
leetcode287寻找重复数
数据结构·c++·算法·leetcode