【LeetCode】20. 有效的括号(Deque的Stack用法)

  今日学习的文章链接和视频链接

leetcode题目地址:20. 有效的括号

 代码随想录题解地址:代码随想录

题目简介

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

有效字符串需满足:

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

看到题目的第一想法(可以贴代码)

1. 经典的数据结构题目

        push所有的左括号类,遇到右括号类则判断栈顶元素是否为其对应的左括号项,选择是否pop,最后判断栈是否为空。

public boolean isValid(String s) {Stack<Character> st = new Stack<>();char[] c = s.toCharArray();for (char i : c){if (i == '('|| i == '[' || i == '{'){st.push(i);System.out.println("push"+i);}else if (i == ')'){if (st.empty() || st.peek() != '(') return false;if (st.peek() == '(') st.pop();}else if (i == ']'){if (st.empty() || st.peek() != '[') return false;if (st.peek() == '[') st.pop();}else if (i == '}'){if (st.empty() || st.peek() != '{') return false;if (st.peek() == '{') st.pop();}}if (st.empty()) return true; else return false;
}

实现过程中遇到哪些困难

看完代码随想录之后的想法

【解题思路】遇到左括号类,push其对应的右括号类,遇到右括号类,判断是否等于栈顶元素,选择是否pop,最后判断栈是否为空。

【想法】

看完视频自己写的ACC:

public boolean isValid(String s) {Stack<Character> st = new Stack<>();char[] c = s.toCharArray();for (char i : c){if (i == '('){st.push(')');}else if (i == '['){st.push(']');}else if (i == '{'){st.push('}');}else if (i == ')' || i == ']' || i == '}'){if (st.empty() || st.peek() != i){return false;}else { st.pop(); }}}if (st.empty()) return true; else return false;
}

标准答案

public boolean isValid(String s) {Deque<Character> deque = new LinkedList<>();char ch;for (int i = 0; i < s.length(); i++) {ch = s.charAt(i);//碰到左括号,就把相应的右括号入栈if (ch == '(') {deque.push(')');}else if (ch == '{') {deque.push('}');}else if (ch == '[') {deque.push(']');} else if (deque.isEmpty() || deque.peek() != ch) {return false;}else {//如果是右括号判断是否和栈顶元素匹配deque.pop();}}//最后判断栈中元素是否匹配return deque.isEmpty();
}

学习时长


今日收获

Stack类的初始化:

        Deque<Character> deque = new LinkedList<>();

        Stack<Character> st = new Stack<>();

Deque可作Queue,也可作Stack:

public interface Deque<E> extends Queue<E> {
    void addFirst(E e);
    void addLast(E e);
    boolean offerFirst(E e);
    boolean offerLast(E e);
    E removeFirst();
    E removeLast();
    E pollFirst();
    E pollLast();
    E getFirst();
    E getLast();
    E peekFirst();
    E peekLast();
    boolean removeFirstOccurrence(Object o);
    boolean removeLastOccurrence(Object o);
 
    // *** Queue methods ***
    boolean add(E e);
    boolean offer(E e);
    E remove();
    E poll();
    E element();
    E peek();
 
    // *** Stack methods ***
    void push(E e);
    E pop();
    
    // *** Collection methods ***
    boolean remove(Object o);
    boolean contains(Object o);
    public int size();
    Iterator<E> iterator();
    Iterator<E> descendingIterator();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/229035.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust学习笔记005:结构体 struct

在 Rust 中&#xff0c;struct 是一种用于创建自定义数据类型的关键字&#xff0c;它允许你定义和组织数据的结构。struct 可以包含多个不同类型的字段&#xff08;fields&#xff09;&#xff0c;每个字段都有一个名称和一个类型。 定义结构体 下面是一个简单的例子&#xff…

Java学习路线第五篇:微服务框架(2)

这篇则分享Java学习路线第五part&#xff1a;微服务框架 恭喜你已经成功追到第五章节第二篇啦&#xff0c;要被自己的努力感动到了吧&#xff0c;而这节将承担起学完微服务架构的使命&#xff0c;本使命为单向契约&#xff0c;你可选择YES或者选择YES。 SpringCloudAlibaba …

记chrome的hackbar无法post php://input的问题

尽管hackbar支持post请求体&#xff0c;但是当请求体里面没有等于号的时候&#xff0c;无法post出去&#xff0c;这样如果需要使用php://input绕过waf的时候就没法做。 在开发人员工具的网络里面可以看到不使用等于号的情况下没有荷载。 之后在这里看到了解决方法&#xff0c;…

【揭秘】程序员P1到P10的划分标准,你在哪一级?

程序员从P1到P10的职级体系作用在于为程序员提供了一条清晰的职业发展通道&#xff0c;通过不断提升技术能力和承担更高级别的职责&#xff0c;实现个人成长&#xff0c;并为公司贡献更大价值。 P1、P2&#xff1a;新手村的小伙伴 这两个级别的小伙伴们&#xff0c;可是计算机…

实战入门 K8s剩下三个模块

1.Label Label是kubernetes系统中的一个重要概念。它的作用就是在资源上添加标识&#xff0c;用来对它们进行区分和选择。 Label的特点&#xff1a; 一个Label会以key/value键值对的形式附加到各种对象上&#xff0c;如Node、Pod、Service等等 一个资源对象可以定义任意数量…

docker Mysql-udf-http

1.Mysql-udf-http镜像已上传到dockerhub中 docker pull heidaodageshiwo/mysql-udf-http:v1 2.启动镜像(默认密码root1234) docker run -tid -p 3306:3306 --namemysql-udf-http --privilegedtrue heidaodageshiwo/mysql-udf-http:v1 3.命令 [rootlocalhost ~]# docker im…

【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数

文章目录 &#x1f680;前言&#x1f680;C有何过C之处&#xff1f;&#x1f680;C中的关键字&#x1f680;命名空间✈️为什么要引入命名空间&#xff1f;✈️命名空间的定义✈️如何使用命名空间中的内容呢&#xff1f; &#x1f680;C中的输入和输出✈️C标准库的命名空间✈…

【K8S 二进制部署】部署单Master Kurbernetes集群

目录 一、基本架构和系统初始化 1、集群架构&#xff1a; 2、操作系统初始化配置&#xff1a; 2.1、关闭防火墙和安全机制&#xff1a; 2.2、关闭swap 2.3、根据规划设置主机名 2.4、三台主机全部互相映射 2.5、调整内核参数 3、时间同步&#xff08;所有节点时间必须同…

一文讲透怎么用SPSS做曲线回归分析?

使用SPSS的“曲线估算回归分析”即可。 以下案例节选自《SPSS统计学基础与实证研究应用精解》张甜 杨维忠 清华大学出版社 2023年 12.3 曲线估算回归分析。 下面我们以销售额作为因变量&#xff0c;以营销费用投入作为自变量&#xff0c;开展曲线估算回归分析&#xff0c;SPS…

mac中excel条件格式找到每一列的最大值并标红

假设现在excel有A1:R24组数据&#xff0c;最终效果如下 先选择要处理数据的第一列&#xff0c;然后点击【条件格式】-【新建规则】 style选择【classic】以及【Use a formula to determine which cells to format】&#xff0c;输入规则【C3MAX(C$3:C$24)】 注意这里C$3前面没…

堆的应用:堆排序和TOP-K问题

上次才讲完堆的相关问题&#xff1a;二叉树顺序结构与堆的概念及性质&#xff08;c语言实现堆 那今天就接着来进行堆的主要两方面的应用&#xff1a;堆排序和TOP-K问题 文章目录 1.堆排序1.1概念、思路及代码1.2改良代码&#xff08;最初建立大堆用AdjustDow&#xff09; 2. TO…

WINDOWS 批量修改图片文件名称(流星程序集之二十)

博主家里有一台电脑&#xff0c;存放家庭全部的照片和视频&#xff0c;从智能手机和3G网络发展开始&#xff0c;家里的照片和视频越来越多&#xff0c;已经达到上万个文件。终于&#xff0c;博主找到一个方法整理和保存这些珍贵的数据资料。 一、按年代目录整理照片和视频 按年…

钡铼技术集IO数据采集可编程逻辑控制PLC无线4G环保物联网关

背景 数据采集传输对于环保企业进行分析和决策是十分重要的&#xff0c;而实时数据采集更能提升环保生产的执行力度&#xff0c;从而采取到更加及时高效的措施。因此实时数据采集RTU成为环保企业的必备产品之一。 产品介绍 在推进环保行业物联网升级过程中&#xff0c;环保RTU在…

【华为机试】2023年真题B卷(python)-欢乐的周末

一、题目 题目描述&#xff1a; 小华和小为是很要好的朋友&#xff0c;他们约定周末一起吃饭。 通过手机交流&#xff0c;他们在地图上选择了多个聚餐地点&#xff08;由于自然地形等原因&#xff0c;部分聚餐地点不可达&#xff09;&#xff0c;求小华和小为都能到达的聚餐地点…

计算机基础面试题 |03.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

RocketMQ 生产者源码分析:DefaultMQProducer、DefaultMQProducerImpl

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

第6课 用window API捕获麦克风数据并加入队列备用

今天是2024年1月1日&#xff0c;新年的第一缕阳光已经普照大地&#xff0c;祝愿看到这篇文章的所有程序员或程序爱好者都能在新的一年里持之以恒&#xff0c;事业有成。 今天也是我加入CSDN的第4100天&#xff0c;但回过头看一看&#xff0c;这么长的时间也没有在CSDN写下几篇…

【docker实战】02 用docker安装mysql

本示例采用bitnami的镜像进行安装MySQL&#xff0c;官网链接&#xff1a;https://bitnami.com/stacks 一、镜像搜索 先搜索一下mysql有哪些镜像 [rootlocalhost ~]# docker search mysql NAME DESCRIPTION …

啊?这也算事务?!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

【SAM系列】Auto-Prompting SAM for Mobile Friendly 3D Medical Image Segmentation

论文链接&#xff1a;https://arxiv.org/pdf/2308.14936.pdf 核心&#xff1a; finetune SAM,为了不依赖外部prompt&#xff0c;通过将深层的特征经过一个编-解码器来得到prompt embedding&#xff1b;finetune完之后做蒸馏