力扣--有效的括号
创始人
2024-04-02 20:37:09
0

有效的括号

题目:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

示例1
输入:s = “()”
输出:true
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例2
输入:s = “()[]{}”
输出:true
示例3
输入:s = “(]”
输出:false


JS

思路

创建一个对象,根据键值对的形式存储,三个括号。
遍历字符串,如果出现对象中的三个左括号,则入栈
之后维护一个栈顶指针top,使用slice(-1)取出栈顶元素,再根据对应键取对应值进行匹配
如果匹配成功则弹栈,如果出现不匹配的直接返回false
最终判断栈长,如果栈中还有元素,即匹配不成功,返回false

代码

/*** @param {string} s* @return {boolean}*/
var isValid = function(s) {//创建一个对象const map = {'(' : ')','[' : ']','{' : '}'}//维护一个栈const stack = []//遍历字符串sfor(let i = 0; i//item存储字符let item = s[i]//初步筛选入栈  此时栈里面全是左括号if(item in map){stack.push(item)}else{//如果不满足三个左括号条件开始消消乐//维护栈顶指针//如果匹配 则弹出if(map[stack.slice(-1)] === item){stack.pop()}else{return false}}}//判断栈中是否有元素 有则返回faslereturn !stack.length
};

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...