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

【算法day18】有效的括号——给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。

  1. 有效的括号
    https://leetcode.cn/problems/valid-parentheses/description/

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

在这里插入图片描述

class Solution {
public:
    vector<char> left = {'(', '[', '{'};
    vector<char> right = {')', ']', '}'};  //这样写可以便于拓展更多的其他符号

    bool isValid(string s) {
        stack<char> st;
        for (int i = 0; i < s.size(); i++) {
            for (int j = 0; j < left.size(); j++) {
                if (s[i] == left[j]) {
                    st.push(left[j]);
                    break; //尽可能减少循环次数
                } else if (s[i] == right[j]) {
                    if (!st.empty()) {
                        char top = st.top();
                        if (top == left[j]) {
                            st.pop();
                        } else {
                            return false;
                        }
                    }else{
                        return false;
                    }
                    break;
                }
            }
        }
        //如果还有没匹配的剩余字符,那么说明字符串无效
        if (st.empty()) {
            return true;
        }
        return false;
    }
};

相关文章:

  • 【第14届蓝桥杯C/C++B组省赛】01串的熵
  • PCA Jittering 图像增强
  • 【通过Groovy去热修复线上逻辑】1.执行线上数据修复 2.写工具
  • 仿函数 VS 函数指针实现回调
  • RAG现有技术方案
  • 【Golang】defer与recover的组合使用
  • PyCharm中使用pip安装PyTorch(从0开始仅需两步)
  • 设计和布局硬件电路是嵌入式系统开发的重要环节
  • 3.22日西南竞篮,NBA勇士VS老鹰,赛前数据前瞻
  • LeetCode 2643.一最多的行:模拟(更新答案)
  • Wispr Flow,AI语言转文字工具
  • 鸿蒙NEXT开发案例:程序员计算器
  • 使用若依AI生成springBoot的前后端分离版本
  • 为WordPress自定义一个留言板
  • 【QA】QT编译过程和C++编译过程的区别?
  • Flutter Dart 异步支持全面解析
  • Rocky9.5基于sealos快速部署k8s集群
  • C++Primer学习(13.2 拷贝控制和资源管理)
  • 搜广推校招面经五十六
  • 基于linux平台的C语言入门教程(4)输入输出
  • 哈马斯官员:只要以军持续占领,哈马斯就不会放下武器
  • 常熟银行一季度净赚超10亿增逾13%,净息差较上年末下降0.1个百分点
  • 咖啡与乳腺健康之间,究竟有着怎样的复杂关系?
  • 马上评|起名“朱雀玄武敕令”?姓名权别滥用
  • 巴基斯坦最近“比较烦”:遣返阿富汗人或致地区局势更加动荡
  • 瑞士外长答澎湃:瑞中都愿升级自贸协定,关税战没有任何好处