当前位置: 首页 > 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;
    }
};
http://www.dtcms.com/a/84110.html

相关文章:

  • 【第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)输入输出
  • MySQL表的增加、查询的基础操作
  • 解决用户同时登录轮询获取用户信息错乱,使用WebSocket和Server-Sent Events (SSE)
  • Vue 3 项目实现国际化指南 i18n
  • 鸿蒙harmonyOS笔记:练习CheckBoxGroup获取选中的值
  • JavaScript 中的性能优化:从基础到高级技巧
  • C++实现求解24点游戏
  • 异步编程与流水线架构:从理论到高并发
  • docker安装redis
  • 深入解析计算机组成原理:从硬件架构到程序运行的本质
  • 【算法day18】合并两个有序链表——将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。