【百日算法计划】:每日一题,见证成长(019)

题目

有效的括号

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

有效字符串需满足:

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

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

示例:

输入:s = "{[]}"

输出:true

思路

  • 左括号直接入栈,右括号与栈顶元素比较是否配对;
java 复制代码
class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); ++i) {
            char c = s.charAt(i);
            if (c == '(' || c == '[' || c == '{'){ //左括号直接入栈
                stack.push(c);
            } else {                               //右括号需要与栈顶符号比较
                if (stack.empty()) return false;
                char top = stack.pop();
                if (c == ')' && top != '('){
                    return false;
                }
                if (c == ']' && top != '['){
                    return false;
                }
                if (c == '}' && top != '{'){
                    return false;
                }
            }

        }
        return stack.empty();
    }
}
相关推荐
帅逼码农3 分钟前
有限域、伽罗瓦域、扩域、素域、代数扩张、分裂域概念解释
算法·有限域·伽罗瓦域
点点滴滴的记录7 分钟前
Java的CompletableFuture实现原理
java·开发语言·javascript
xiaolingting8 分钟前
Java 引用是4个字节还是8个字节?
java·jvm·引用·指针压缩
Jayen H8 分钟前
【优选算法】盛最多水的容器
算法
一只傻小白,13 分钟前
JAVA项目中freemarker静态模板技术
java·开发语言
袁庭新13 分钟前
Spring Boot项目接收前端参数的11种方式
java·springboot·袁庭新·如何接收前端数据·boot接收数据
机跃14 分钟前
递归算法常见问题(Java)
java·开发语言·算法
<但凡.26 分钟前
题海拾贝:蓝桥杯 2020 省AB 乘法表
c++·算法·蓝桥杯
程序员-小李34 分钟前
餐厅下单助手系统(Java+MySQL)
java·开发语言·mysql
开心工作室_kaic38 分钟前
springboot496基于java手机销售网站设计和实现(论文+源码)_kaic
java·开发语言·智能手机