首页 > 其他分享 >20.valid-parentheses 有效的括号

20.valid-parentheses 有效的括号

时间:2022-08-16 19:33:51浏览次数:47  
标签:parentheses return temp else 括号 valid 20 false st

利用stack,括号匹配时pop()

#include <stack>
#include <string>
using std::stack;
using std::string;
class Solution {
  public:
    bool isValid(string s) {
        stack<char> st;
        char temp;
        for (char c : s) {
            if (c == '(' || c == '{' || c == '[')
                st.push(c);
            else {
                if (st.empty())
                    return false;
                if (c == ')') {
                    temp = st.top();
                    st.pop();
                    if (temp != '(')
                        return false;
                } else if (c == '}') {
                    temp = st.top();
                    st.pop();
                    if (temp != '{')
                        return false;
                } else {
                    temp = st.top();
                    st.pop();
                    if (temp != '[')
                        return false;
                }
            }
        }
        if (st.empty())
            return true;
        else
            return false;
    }
};

一种更简洁的写法,遇到左括号,入栈对应的右括号

#include <stack>
#include <string>
using std::stack;
using std::string;
class Solution {
  public:
    bool isValid(string s) {
        stack<char> st;
        char temp;
        for (char c : s) {
            if (c == '(')
                st.push(')');
            else if (c == '[')
                st.push(']');
            else if (c == '{')
                st.push('}');
            //碰到右括号时栈为空或者上一个字符不是对应的左括号
            else if (st.empty() || c != st.top())
                return false;
            else
                st.pop(); //括号匹配时出栈
        }
        return st.empty();
    }
};

标签:parentheses,return,temp,else,括号,valid,20,false,st
From: https://www.cnblogs.com/zwyyy456/p/16592708.html

相关文章

  • 2022-08-16第七组薛雯匀
    DQL数据库查询语言重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构。构建数据库创建一张student表:DROPTABLEIFEXISTSst......
  • [2010年NOIP普及组] 接水问题
    [2010年NOIP普及组]接水问题分析:根据题意,要输出所用时间最长的那个人(包括那个人在等待的时间),分为两种情况,第一种是水龙头多于要打水的人数,这种情况下就可以直接写一个比......
  • 2022-08-16 第六组 Myy 学习笔记_DQL数据库查询语言
    DQL数据库查询语言重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构。构建数据库创建一张student表:DROPTABLEIFEXISTSst......
  • Modbus转Profinet网关连接英威腾Goodrive200A配置案例
    本案例是Modbus转Profinet网关连接英威腾变频器的配置案例。用到的设备为西门子1200PLC一台,小疆智控Modbus转Profinet网关GW-PN5001一台,英威腾Goodrive200A变频器一台。 ......
  • qt5.9 +vs2015 32bit 错误“-1: error: LNK1158: 无法运行“rc.exe”
    开发平台qt5.9.0+vs201532bit....在准备运行vs2015及安装了vs2019后,运行原来可以运行的程序时,出现了错误“-1:error:LNK1158:无法运行“rc.exe”复制了“C:\Progra......
  • 1020 胖胖的牛牛 优先队列 bfs 转向时上上次xy与当前xy都不同
     链接:https://ac.nowcoder.com/acm/problem/208246来源:牛客网题目描述每逢佳节胖三斤,牛牛在过去的节日里长胖了,连拐弯都困难,甚至会卡在门上......
  • luogu P8293 [省选联考 2022] 序列变换
    题面传送门因为WC2022考了这种构造,所以下意识将括号序列建树。手玩一下发现第一个操作实际上是干了这个事情:也就是说把用其中一个括号将另一个同层括号在树上移到了下......
  • CSP-J 2022备战——树的基础
    前身树,顾名思义,是一种植物一些基本概念:根节点:树上任意一点都可以被定义成根节点,也就是所有点的祖先祖节点(祖先):在某节点的上层,且跟该节点有直接联系的点父节点(父亲):在子......
  • VS2019 git 提交忽略生成文件
    由于首次将代码移交至gitee时,没有注意,将一堆生成文件都提交到了码云上,如debug、release下的文件等等。提交时需要将这些文件忽略掉,那么应该怎么做呢?一、通过VS2019添加.g......
  • EcmaScript 2020 新特性总结
    1.可选操作符“?.” 这个操作符用来获取后端对象可能的不存在的属性值的时候十分有用日常开发中,当需要访问嵌套在对象内部好几层的属性时使用 letnestedProp=......