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();//所有左括号都被匹配
    }
}
相关推荐
Polaris_T28 分钟前
2026最新字节大模型岗面经汇总(多平台整理)
人工智能·经验分享·算法·aigc·求职招聘
1368木林森35 分钟前
字节 / 美团二面高频题:订单 30 分钟未支付自动取消?3 种进阶方案拆解 + 面试满分回答
面试·职场和发展
ghie909037 分钟前
MATLAB 解线性方程组的迭代法
开发语言·算法·matlab
m0_7431064637 分钟前
【浙大&南洋理工最新综述】Feed-Forward 3D Scene Modeling(二)
人工智能·算法·计算机视觉·3d·几何学
Brilliantwxx38 分钟前
【数据结构】排序算法的神奇世界(下)
c语言·数据结构·笔记·算法·排序算法
进击的荆棘39 分钟前
递归、搜索与回溯——二叉树中的深搜
数据结构·c++·算法·leetcode·深度优先·dfs
人道领域42 分钟前
【LeetCode刷题日记】:151翻转字符串的单词(两种解法)
java·开发语言·算法·leetcode·面试
会编程的土豆1 小时前
【日常做题】栈 中缀前缀后缀
开发语言·数据结构·算法
进击的荆棘1 小时前
递归、搜索与回溯——回溯
数据结构·c++·算法·leetcode·dfs
白羊by10 小时前
YOLOv1~v11 全版本核心演进总览
深度学习·算法·yolo