每天一道leetcode:20.有效的括号(简单;栈的经典题目)

⭐今日份题目

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。

  2. 左括号必须以正确的顺序闭合。

  3. 每个右括号都有一个对应的相同类型的左括号。

示例1

输入:s = "()"
输出:true

示例2

输入:s = "()[]{}"
输出:true

示例3

输入:s = "(]"
输出:false

提示

  • 1 <= s.length <= 104

  • s 仅由括号 '()[]{}' 组成

⭐题目思路

这里还是提取一下题目的特征点:

  • 闭合

  • 按顺序

  • 每个左(右)对应一个右(左)

先考虑明面上的错误情况:

  • 只有左(右)

  • 左右不对应

解题思路是使用,栈的特点是先进后出,完全符合该模式。⭐基本过程是:当我们遇到左括号时,将其压入栈;遇到右括号时,从栈中取出一个符号看是否配对就好

深入来看,还要考虑括号嵌套问题,不需要担心当前右括号需要跨越几个正常的括号组才能找到左括号的问题,如 " { [ ] ) " ,因为,正常的括号组一定早已经经历了配对,所以每次只需要判断栈顶的是否是对应的左括号就好。

该题目是栈相关的简单、经典题目,初学的同学们可以多看几遍,多做几次。

⭐stack补充知识

这里再简单补充一下STL中stack的使用方法。

栈是先进后出,后进先出的数据结构,使用方法主要包括:

//声明
stack<int> s;
//指定底层容器的栈
stack<int,vector<int> > s;
//入栈
s.push(1);
//访问栈顶
s.top();
//从栈顶清除一个元素(只能从栈顶清除)
s.pop();
//判断栈中是否还有元素
s.empty();//无元素的话,empty函数会返回true
//判断栈的元素数量
s.size();
​
//清空栈中的元素
for(int i=s.size();i;i--) s.pop();

⭐代码

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

提交结果

我的代码的内存消耗还有待改进,欢迎大家提供更高效的代码,如果过后有更优化的思路我还会继续更新的,大家评论区见!

点赞收藏不迷路⭐~

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

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

相关文章

Nano 33 BLE Sense Rev2学习第一节——环境配置

参考文档见Access Barometric Pressure Sensor Data on Nano 33 BLE Sense | Arduino Documentation 打开Arduino ide安装开发板 选择开发板 连接开发板到电脑&#xff0c;自动识别开发板端口&#xff0c;选择端口

Python-类型检查:typing模块和mypy工具

Python-类型检查&#xff1a;typing模块和mypy工具 >>返回Python系列文章目录<< 文章链接: Python中typing模块 文章链接: PyCharm集成类型检查mypy

ssh 一次执行多条命令(后台运行)

文章目录 1. 背景2. 命令2.1 命令分隔符2.2 多行脚本2.3 单行脚本 3. SSH 任务后台运行 1. 背景 有时我们只需要远程执行一次任务然后就关闭&#xff0c;而不需要长时间 ssh 登录到远程服务器。同时一次任务可能需要执行多条命令&#xff0c;那么我们该如何做呢&#xff1f; …

【Java】查看class文件的jdk编译版本的两种方式

一、使用文本编辑工具EditPlus 使用EditPlus打开该class文件&#xff0c;字符集选择16进制&#xff08;Hex viewer&#xff09;。 仅看第一行数据&#xff0c;前面8个字节CA FE BA BE是固定的。 之后4个字节00 00 是次版本。 次版本后面的4个字节00 34 就是jdk版本。 jdk版本…

torch中的sort用法|torch.sort

今天在学习代码时&#xff0c;发现有些深度学习的项目中使用到torch.sort()函数&#xff0c;在此记录一下&#xff0c;方便自己的查阅. torch.sort() 官网给出了非常详细的介绍&#xff0c;但是为了更进一步掌握这一用法&#xff0c;在此记录一下。 具体官网链接如下&#xf…

华为认证HCIP报名条件有哪些?考试要求介绍

华为HCIP认证是很多网络工程师的考证首选&#xff0c;尤其对于刚入行不久的网络工程师们来说&#xff0c;这个证书无论是从难度出发还是从含金量出发&#xff0c;都是值得一考的。 那么如果想报名华为HCIP认证有哪些条件以及考试要求&#xff0c;华为HCIP的报名需不需要通过机…

镜头畸变模型及去畸变的原理

1. OpenCV去畸变undistortPoints原理解析 Opencv中镜头畸变包含了径向畸变和切向畸变&#xff0c;本章节主要阐述镜头畸变模型以及去畸变的原理。 1.1 镜头畸变模型 参考opencv文档 https://docs.opencv.org/3.1.0/d4/d94/tutorial_camera_calibration.html&#xff0c;opencv…

基于SpringBoot+MYSQL的医护人员排班系统

基于springboot的医护人员排班系统录像 1、 前言介绍 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足&#xff0c;创建了一个计算机管理医护人员…

LSA头部结构简述

LSA&#xff08;Link State Advertisement&#xff09;是一种用于路由协议头部结构&#xff0c;用于在网络中传递路由信息。 LSA头部结构包含以下几个字段&#xff1a; 1、LSA类型&#xff08;LSA Type&#xff09;&#xff1a;指示LSA的类型&#xff0c;不同类型的LSA用于传递…

Rabbitmq消息丢失-消费者消息丢失(二)

说明&#xff1a;消费端在处理消息的过程中出现异常&#xff0c;例如&#xff1a;业务逻辑异常&#xff0c;或者消费者被停机&#xff0c;或者网络断开连接等&#xff0c;以上等情况使消息没有得到正确恰当的处理&#xff0c;也会使消息丢失。 分析&#xff1a;分析就是说明中…

Composer基础使用 SDK包初始化

Composer 的工作原理 我们在使用 Composer 之前我们得了解一下它的实现原理&#xff0c;它主要由三个部分组成&#xff1a;命令行工具、包仓库、代码库&#xff1a; Packagist 它是官方仓库&#xff0c;也就是我们平常说的 Composer 源&#xff0c;它的作用是存储这些包的信息…

参数引入和全局变量引入实现-目标和

LCR 102. 目标和 - 力扣&#xff08;LeetCode&#xff09; 分析题意&#xff0c;画出决策树&#xff0c;其他的思路都跟前面讲过的类似&#xff1a; 全局变量引入实现&#xff1a; 全局变量的引入&#xff0c;需要手动处理回溯&#xff1b; class Solution {int ret; //…

从0到1全流程使用 segment-anything

从0到1全流程使用 segment-anything 一、安装 anaconda 一、下载 anaconda 二、以管理员身份运行安装 1、勾选 Just Me 2、统一安装路径(后续 python 等包也安装至此目录) 3、勾选 add to path 然后安装即可。 三、修改 Anaconda 默认路径及默认缓存路径 Anaconda 默认下…

K8S集群误删master节点,master节点恢复完美解决

问题描述&#xff1a; 在单节点的master节点k8s集群中不小心误删了master节点导致集群不可用。 多节点应的恢复方式同样也适用。 解决方案&#xff1a; 两条命令解决master节点恢复&#xff0c;而不是去重装k8s集群。 执行下面命令&#xff0c;生成节点的join命令 kubeadm t…

蓝桥杯 9241.飞机降落

这道题本来作者以为是可以用一些小技巧进行暴力解法的&#xff0c;但是后来试了一下&#xff0c;不能过去全部数据。 下面是对半个的题解&#xff1a; #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…

掌握 Python: 每个开发人员都应该知道的6个秘密技巧

无论你是一名经验丰富的开发者还是刚踏入编程世界的新手&#xff0c;Python 很可能已经引起了你的兴趣。 它功能强大、灵活多变&#xff0c;而且非常用户友好&#xff01;但是&#xff0c;让我们更进一步吧! 在这篇博客中&#xff0c;我将揭示一些隐藏的 Python 技巧&#xff0…

#QT(DEMO)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;打印"hello wolrd" 3.记录 &#xff08;1&#xff09;创建一个新工程&#xff1a; 新建好一个工程存放文件夹&#xff08;路径不能有中文&#xff09;,然后按下图配置 &#xff08;2&#xff09;点击widgets.ui拖入以…

AIGC时代,程序员副业的必修课【提供免费指导,手把手实践】

给自己的新课做个宣传&#xff0c;限时6折&#xff0c;感兴趣的可以听一听&#xff0c;完全干货。提供课程购买订单&#xff0c;可免费获得21天从0到1全程上站指导。 《AIGC时代&#xff0c;程序员副业的必修课》 AIGC时代的到来&#xff0c;又是一个程序员的副业赚钱的好机会…

真香定律!我用这种模式重构了第三方登录

分享是最有效的学习方式。 博客&#xff1a;https://blog.ktdaddy.com/ 老猫的设计模式专栏已经偷偷发车了。不甘愿做crud boy&#xff1f;看了好几遍的设计模式还记不住&#xff1f;那就不要刻意记了&#xff0c;跟上老猫的步伐&#xff0c;在一个个有趣的职场故事中领悟设计模…

improve-echarts饼图自适应(分辨率放大缩小)

1.echarts 本身存在放大缩小图表不变的情况&#xff0c;要求要图表适应分辨率&#xff0c;根据分辨率放大缩小来进行适应与响应式。 饼图 <!-- 饼状 --><div class"leftrcyle"><div class"ciclye"><div id"cicly" class&q…