当前位置: 首页 > article >正文

[LeetCode]day31 20.有效的括号

题目链接

题目描述

示例 1:

输入:s = “()”

输出:true

示例 2:

输入:s = “()[]{}”

输出:true

示例 3:

输入:s = “(]”

输出:false

示例 4:

输入:s = “([])”

输出:true

提示:

1 <= s.length <= 104
s 仅由括号 ‘()[]{}’ 组成

解题

请添加图片描述

思路

1.遇到 ({[ 就压入栈
2.遇到 )}] 就取栈顶看是否相匹配,不相配返回false,相配弹出
3.遍历完字符串之后,判断栈是否为空,如果为空则返回true;不为空返回false;

代码

class Solution {
public:
    bool isValid(string s) {
        stack<char>bracket;
        for(int i=0;i<s.size();i++){
                if(s[i]=='('||s[i]=='['||s[i]=='{'){
                    bracket.push(s[i]);
                }else{
                    if(bracket.empty())return false;
                    switch(s[i]){
                      case ')':
                        if(bracket.top()!='(')
                        return false;
                        break;
                      case']':
                      if(bracket.top()!='[')
                        return false;
                        break;
                      case'}':
                       if(bracket.top()!='{')
                        return false;
                        break;
                    }
                    bracket.pop();
                }
        
        }
       return bracket.empty();
                
    }
};

http://www.kler.cn/a/566430.html

相关文章:

  • 10.【线性代数】—— 四个基本子空间
  • 网络安全红队工具
  • 水滴tabbar canvas实现思路
  • dify镜像拉取不下来如何解决
  • 【Kubernetes】API server 限流 之 maxinflight.go
  • SpringBoot集成Elasticsearch 7.x spring-boot-starter-data-elasticsearch 方式
  • 请求对象和响应对象
  • [杂学笔记]迭代器的原理、进程与线程的区别、.vector的内存管理、vim的命令模式指令集合、多线程的最大问题、HTTP协议与HTPPS协议区别
  • 使用write函数
  • Windows上使用go-ios实现iOS17自动化
  • C++20 新特性:char8_t 的诞生与意义
  • DeepSeek 助力 Vue3 开发:打造丝滑的页脚(Footer)
  • linux第四讲----基础开发工具vim
  • Web Storage: LocalStorage 和 SessionStorage 深入解析
  • 跨平台实时文件互传工具
  • 第十四届蓝桥杯大赛软件赛国赛C/C++大学C组
  • Storm实时流式计算系统(全解)——上
  • 手机隐私数据彻底删除工具:回收或弃用手机前防数据恢复
  • Basler acA1920-40gc
  • Mean Shift聚类算法深度解析与实战指南