Leetcode—— 20.有效的括号

2023-11-05

20. 有效的括号

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

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

在这里插入图片描述

class Solution {
public:
    bool isValid(string s) {

        if(s.length()%2==0)
        {           
           stack<char> st;
            for(int i=0;i<s.length();i++)
            {
                char c=s.at(i);
                if(c=='('||c=='['||c=='{')
                {
                    st.push(c);
                }
                else if(c==')'){
                    if(!st.empty()&&st.top()=='(')
                    {
                        st.pop();
                    }
                    else
                    {
                        return false;
                    }
                }
                else if(c=='}')
                {
                    if(!st.empty()&&st.top()=='{')
                    {
                        st.pop();
                    }
                    else
                    {
                        return false;
                    }
                }
                else{
                    if(!st.empty()&&st.top()=='[')
                    {
                        st.pop();
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            return st.empty();
        }
        return false;

    }
};

Leecode官方代码:

class Solution {
public:
    bool isValid(string s) {
        int n = s.size();
        if (n % 2 == 1) {
            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();
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/valid-parentheses/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode—— 20.有效的括号 的相关文章

随机推荐

  • Spring Data Elasticsearch 3.13 操作摘要

    1 4 7 异步查询结果 可以使用Spring的异步方法执行功能异步运行存储库查询 这意味着该方法在调用时立即返回 而实际的查询执行发生在已提交给Spring的任务中TaskExecutor 异步查询执行与响应式查询执行不同 不应混合使用
  • 软件架构模式-读书笔记(4)-微服务架构

    微服务架构模式作为替代单体应用和面向服务架构的一个可行的选择 在业内迅速取得进展 微服务架构的每个组件都作为一个独立单元进行部署 让每个单元可以通过有效 简化的传输管道进行通信 同时它还有很强的扩展性 应用和组件之间高度解耦 使得部署更为简
  • windows7 安装mongodb

    本文转载至 https blog csdn net qq 27093465 article details 54574948 注意这个安装的位置 下面要用呢 图上的说的是刚刚安装完的时候的样子 打错字啦 1 创建几个文件夹具体如下 数据库路
  • 5.12 QQ群里的第二次线下活动

    author skate time 2013 05 14 5 12 QQ群里的第二次线下活动 分享主题 大数据hadoop 1 5小时 分享人 袁科 完美世界系统中心 长期从事大数据处理技术工作 对分布式系统开发 监控 配置 维护比较感兴趣
  • linux sftp多个秘钥,Linux下sftp配置之密钥方式登录

    由于vsftp采用明文传输 用户名密码可通过抓包得到 为了安全性 需使用sftp 锁定目录且不允许sftp用户登到服务器 由于sftp使用的是ssh协议 需保证用户只能使用sftp 不能ssh到机器进行操作 且使用密钥登陆 不是22端口 创
  • Java正则表达式以及Pattern和Matcher类详解

    概述 正则表达式 一 概述 用来描述或者匹配一系列符合某个语句规则的字符串 二 单个符号 1 英文句点 符号 匹配单个任意字符 表达式t o可以匹配 tno t o teo等等 不可以匹配 tnno to Tno t正o等 2 中括号 只有
  • 第十一届蓝桥杯省赛模拟题第八题

    第八题 题目 问题描述 对于一个 n 行 m 列的表格 我们可以使用螺旋的方式给表格依次填上正整数 我们称填好的表格为一个螺旋矩阵 例如 一个 4 行 5 列的螺旋矩阵如下 1 2 3 4 5 14 15 16 17 6 13 20 19
  • Java的基本数据类型有哪些?

    一 Java 变量类型 在Java语言中 所有的变量在使用前必须声明 声明变量的基本格式如下 type identifier value identifier value 格式说明 type为Java数据类型 identifier是变量名
  • ip地址0.0.0.0与127.0.0.1的区别(转载)

    原文链接 http blog csdn net ttx laughing article details 58586907 最近在项目开发中发现一个奇怪的问题 当服务器与客户端在同一台机器上时 用服务器ip 本地主机ip 192 168 1
  • C语言_给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    2 给定一个排序链表 删除所有重复的元素 使得每个元素只出现一次 示例 1 输入 1 gt 1 gt 2 输出 1 gt 2 示例 2 输入 1 gt 1 gt 2 gt 3 gt 3 输出 1 gt 2 gt 3 Definition f
  • v-model指令

    v model指令使用 一 v model的基本使用 双向绑定 常用于表单元素 div div
  • QT学习笔记-24.使用QTimeLine

    一个简单的代码如下 include
  • 网络驱动程序概述

    一 网路驱动程序 使用net device描述设备 使用套接字描述符sk buff封装数据 二 设备的注册 alloc ethdev分配net device结构和私有的数据区 并初始化以太网设备结构 标志 硬件地址 初始化缓冲区描述符 申请
  • 基于RFID的仓储管理系统的设计与实现-毕业论文

    摘 要 无线射频识别 Radio Frequency Identification RFID 技术是一种非接触式的自动识别技术 与早期的自动识别技术相比 RFID技术因其特有的非接触性以及对多个目标同时识别的特性 正逐渐被广泛地应用在物流
  • 详解操作系统线程

    一 线程概述 1 1 为什么需要线程 一个应用通常需要同时处理很多独立的工作 同时执行的任务称为 执行流 由于各个执行流是独立的 所以在多核CPU中 不希望他们是顺序执行的 在 详解操作系统进程 的最后面 我们提到了创建子进程可以得到两个并
  • wireshark捕捉使用简介

    本篇主要从实用角度讲解wireshark的使用 1 首先wireshark是一个抓包工具 用来分析在各个协议包装之后的包是怎样的 2 wireshark的安装 下载安装即可 此处不再介绍 3 使用 3 1 首先选择监听的网络连接 我的电脑使
  • JVM 由哪些部分组成?

    JVM 由哪些部分组成 解析 这是对 JVM 体系结构的考察 答 JVM 的结构基本上由 4 部分组成 类加载器 在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中 执行引擎 执行引擎的任务是负责执行 class 文件中
  • 反馈线性化:具有柔性关节的单连杆操纵臂

    文章目录 写在前面 机械臂模型 输入 状态反馈线性化 坐标变换和微分同胚 输入 状态可反馈线性化的条件 机械臂实例1 输入 输出反馈线性化 相对阶和李导数 输入 输出可反馈线性化的条件 跟踪控制器设计 机械臂实例2 写在前面 通过反馈和坐标
  • JEESITE4实战之旅(四) 去版权信息

    在用JEESITE4做项目的时候 我们当然不想看到系统上显示的是JEESITE的版权信息 并且还显示的是官网的链接 其实THINKGEM大神已经告诉了我们方法 只是很多人可能没有注意到 http jeesite4 mydoc io t 26
  • Leetcode—— 20.有效的括号

    20 有效的括号 给定一个只包括 的字符串 s 判断字符串是否有效 有效字符串需满足 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 每个右括号都有一个对应的相同类型的左括号 class Solution public boo