算法(附思维导图 + 全部解法)300题之(20)有效的括号
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(20)有效的括号
导读:
项目&作者
1 GitHub - LeetCode项目仓库
0)本项目地址: https://github.com/CYBYOB/algorithm-leetcode 。 目标、愿景: 让每个人都能拥有一定的算法能力、以应对面试中(会举一反三的同学还可以将其融入自己的肌肉和血液,甚至能够赋能于公司的业务和技术)的算法。 1)项目的根目录下的 README.md 文件, 可以帮您快速查阅每1道题的来源、难度、所有的题解方案等。 2)而每个题解(即 index.md 文件)中, 还将附带题目描述、所有的题解方案的思维导图( .xmind 文件)、思路和技巧等。 3)每种题解方案都有详细的注释, 通过“数字步骤”将抽象的算法逻辑、 清晰和有层次的展示于您的面前。 可以说是, 开箱即用~ 4)所有的题解方案都是经过作者1人之手, 故代码风格及其统一。 一旦阅读达到一定量后, 后续将大大提升您的阅读速度 —— “正所谓、量变引起质变”。 5)本人每周仍在不断的更新 —— 保证每周都有新的题目、题解方案刺激着您的神经 和 刷题欲望。 欢迎对算法感兴趣的同学加入我们的社群。 QQ群: 933919972 ; 作者QQ: 1520112971 ; 作者VX: c13227839870(可拉您进群、一起学习与交流~) 。
2 LeetCode算法刷题&交流群:
1 QQ群:
2 VX群:
3 作者标签
1)“伪全栈工程师,主攻前端,偶尔写点后端”。 2)2019年的微信小程序应用开发赛 - 全国三等奖; 2019CODA比赛 - 前 17/211 强 且 荣获“优秀团队”称号 等。 3)“半自媒体人”, 在校期间、个人公众号(IT三少。新自媒体(公众号)号: 码农三少 ) 在半年内实现了0到5.8K+的粉丝增长等。
一 题目描述
二 解法总览(思维导图)
三 全部解法
1 方案1
1)代码:
// 方案1 栈 。 var isValid = function(s) { // 1)状态初始化 const l = s.length; let leftStack = [], leftList = ['(','{','['], // 右括号到左括号的映射关系 —— 判断 看当前值 与 “栈顶”值是否匹配 。 rightToLeftMap = new Map([ [')', '('], ['}', '{'], [']', '['] ]); // 2)处理。 for(let i = 0; i <= l; i++) { // 2.1)若 当前”左括号”,则 压入“栈顶” 。 if(leftList.includes(s[i])){ leftStack.push(s[i]); } // 2.2)若 当前为”右括号”,则 看当前值 与 “栈顶”值是否匹配 。 else { // 2.2.1)若 不匹配,则直接 return false; if(leftStack.pop() !== rightToLeftMap.get(s[i])){ return false; } } } // 3)返回结果。 // 遍历完,若 左括号正好被消耗完(leftStack长度为 0 ),则 为有效的的括号。 return leftStack.length === 0; };
2 方案2
1)代码:
// 方案2 正则 。 var isValid = function(s) { // 1)初始化 相关的正则表达式 。 const reg = /\[\]|\(\)|\{\}/; // 2)处理。 // 核心:若 s不断存在 []、()或{}子串,则 将给它们不断的替换成 '' ,并 更新s值 。 while (reg.test(s)) { s = s.replace(reg, ''); } // 3)返回结果。 // 若 将所有的 []、()或{}子串 都替换成 '' 后、s长度为0,则 为有效的的括号。 return s.length === 0; }#互联网求职##学习路径#