每日一练(36):有效的括号

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

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

有效字符串需满足:


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


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


示例 1:


输入:s = "()"

输出:true


示例 2:


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

输出:true


示例 3:


输入:s = "(]"

输出:false


示例 4:


输入:s = "([)]"

输出:false


示例 5:


输入:s = "{[]}"

输出:true


提示:


1 <= s.length <= 104


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


来源:力扣(LeetCode)


链接:https://leetcode-cn.com/probl...


方法一:栈+哈希表


思路分析


  1. 有效括号字符串的长度,一定是偶数!


  1. 右括号前面,必须是相对应的左括号,才能抵消!


  1. 右括号前面,不是对应的左括号,那么该字符串,一定不是有效的括号!


bool isValid(string s) {
    if (s.size() % 2) {
        return false;
    }
    unordered_map<char, char> pairs = {
        {')', '('},
        {']', '['},
        {'}', '{'}
    };
    stack<char> stk;
    for (char ch : s) {
        if (pairs.count(ch)) {
            if (stk.empty() || stk.top() != pairs[ch]) {
                return false;
            }
            stk.pop();
        } else {
            stk.push(ch);
        }
    }
    return stk.empty();
}


方法二:栈


bool isValid(string s) {
    if (s.size() % 2) {
        return false;
    }
    stack<char> st;
    for (auto ss : s) {
        if (ss == '(') {
            st.push(')');
        } else if (ss == '[') {
            st.push(']');
        } else if (ss == '{') {
            st.push('}');
        } else {
            if (st.empty() || st.top() != ss) {
                return false;
            } else {
                st.pop();
            }
        }
    }
    return st.empty();
}
目录
相关文章
|
存储 安全 数据管理
数据安全之认识数据资产管理平台
随着企业数字化转型的深入,数据已经成为企业的重要资产。企业需要更加有效地管理和利用数据,以支持业务决策、优化运营和提高竞争力。本文让我们一起来认识数据资产及数据资产管理平台。
1599 1
|
3月前
|
数据采集 机器学习/深度学习 传感器
传统MES向AI智能MES转型的技术难点是什么?
从传统MES(制造执行系统)向AI智能MES转型的过程,绝非简单的“软件升级”或“模块叠加”,而是一场涉及数据架构、算法模型、业务逻辑乃至组织文化的深层重构。
265 1
|
6月前
|
项目管理 开发者
业务架构图
本文系统阐述了业务架构图的核心概念与绘制方法,涵盖业务定义、架构分层(组织层、应用层、能力层、基础层)、模块划分及功能分解,并结合医院场景示例,说明如何通过分层、分模块、分功能构建清晰的业务视图,提升客户理解与开发效率。
|
11月前
|
安全 编译器 PHP
PHP 8 新特性:现代化开发的飞跃
PHP 8 新特性:现代化开发的飞跃
411 89
|
11月前
|
人工智能 数据可视化 安全
提升效率的秘密武器:10款最佳会议纪要与任务衔接工具推荐
【企业会议纪要落地难题及解决方案】 当前企业普遍面临会议纪要执行难的问题:1)会议记录与任务执行脱节,手动转化效率低;2)责任分配不清导致重复沟通;3)缺乏追踪机制造成任务拖延。针对这些痛点,市场上涌现出10款专业工具(如飞书、Teambition等),通过智能记录、任务自动转化、进度追踪等功能实现;会议-执行&quot;闭环管理。选型需考虑场景适配、系统对接和易用性,建议配合五步流程(模板制定-任务指派-自动提醒-定期复盘)使用。这类工具不仅能提升30%以上执行效率,更能帮助企业建立;
953 2
|
传感器 算法 定位技术
遥感数字图像处理教程复习整理2
遥感数字图像处理教程复习整理
506 0
|
Linux Nacos 数据库
【微服务】生产部署nacos集群(三个节点)
【微服务】生产部署nacos集群(三个节点)
650 1
|
存储 数据可视化 数据处理
单细胞Seurat - 数据处理 (2)
单细胞Seurat - 数据处理 (2)
|
安全 关系型数据库 MySQL
讲解移动应用中的数据同步技术。
【4月更文挑战第1天】移动应用数据同步确保跨设备一致性,常见方法包括:数据库主从复制(如MySQL)维护多副本一致性;使用Firebase等框架简化同步并支持离线功能;选择HTTP、轮询、Socket或Push服务等同步协议,权衡实时性与实现复杂度;蚂蚁集团的SYNC提供安全大规模数据同步。开发者须依据实时性、安全性、性能需求及网络条件选择合适技术。
775 0