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;
    }
}
相关推荐
键盘上的GG小怪兽GG18 小时前
Debian 安装CUPS操作
linux·服务器·debian
Irene199118 小时前
Windows 11 WSL Ubuntu 环境:实际安装 Hadoop 踩坑实录
linux·hadoop·ubuntu
8K超高清18 小时前
CCBN展会多图回顾
人工智能·算法·fpga开发·接口隔离原则·智能硬件
手可摘星辰的少年18 小时前
Ext2数据块寻址原理:直接块、间接块到三级间接块
linux
Irene199118 小时前
nano 和 vim(Linux 默认安装)的区别(文本编辑器 vs 专业编辑器)
linux·vim·nano
量子炒饭大师18 小时前
【Linux系统编程】——【从0构建第一个Linux系统-进度条】从0到1分阶段构建动态进度条
linux·运维·服务器·进度条
阿Y加油吧18 小时前
两道数组算法题复盘:多数元素 & 颜色分类
算法·leetcode·职场和发展
.千余19 小时前
【Linux】网络基础2---Socket编程预备
linux·网络·php
曦月合一19 小时前
在CentOS 6.5系统中OpenJDK 1.7升级更新 OpenJDK 1.8,并部署
linux·centos·jdk1.8
小小ken19 小时前
virtualbox中的ubuntu虚拟机登录到桌面后出现屏幕闪烁现象解决办法
linux·运维·ubuntu