leetcode-有效的括号

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

有效字符串需满足:

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

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

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

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

示例 5:

输入:s = "([)]"

输出:false

提示:

1 <= s.length <= 104

s 仅由括号 '()[]{}' 组成

思路 :考察栈的使用。栈是维护一个区间中满足某些条件的状态的数据结构。区间可以是整个数组,也可以是数组的一部分。

对于本题,栈内的基本元素是单个字符,所以遍历整个字符串,根据当前字符的情况,判断出栈入栈即可。
代码

c 复制代码
class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for(int i = 0;i<s.length();i++){
            Character c = s.charAt(i);
            if(c=='('||c=='['||c=='{'){
                stack.push(c);
            }else{
                if(stack.isEmpty()){
                    return false;
                }else{
                    if((c==')'&&stack.peek()=='(')
                    || (c==']'&&stack.peek()=='[')
                    || (c=='}'&&stack.peek()=='{')){
                        stack.pop();
                    }else{
                        return false;
                    }
                }
            }
        }
        if(stack.isEmpty()){
            return true;
        }
        return false;
    }
}
相关推荐
计算机安禾11 小时前
【C语言程序设计】第30篇:指针与字符串
c语言·开发语言·c++·算法·visualstudio·visual studio code·visual studio
信奥胡老师11 小时前
GESP 2026年3月C++三级(二进制回文串)
开发语言·c++·算法
小年糕是糕手11 小时前
【35天从0开始备战蓝桥杯 -- 刷题包】
c语言·jvm·数据结构·c++·算法·蓝桥杯
[纳川]11 小时前
Alibaba Cloud Linux 4或者 CentOS 9 无法秘钥登录
linux·运维·centos
Σίσυφος190011 小时前
ICP 为啥会陷入到局部?为何point to Plane 比point to Point 收敛更快?
算法
C雨后彩虹11 小时前
最小矩阵宽度
java·数据结构·算法·华为·面试
FriendshipT11 小时前
Ultralytics Docker 安装使用教程(以训练 YOLO26 模型为例)
linux·运维·人工智能·目标检测·ubuntu·docker·容器
2301_8163743311 小时前
AutoBackupGuard 多服务器自动化备份与完整性校验系统
linux·运维·服务器·centos·自动化·github
liuyao_xianhui11 小时前
动态规划_最长递增子序列_C++
java·开发语言·数据结构·c++·算法·链表·动态规划
不想看见40411 小时前
Find All Numbers Disappeared in an Array数组--力扣101算法题解笔记
笔记·算法·leetcode