本文共 999 字,大约阅读时间需要 3 分钟。
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。力扣链接:https://leetcode-cn.com/problems/valid-parentheses/
1. 创建一个HashMap,把括号配对放进去 2. 创建一个stack([]),for循环遍历字符串,对于每一个字符, 如果map里有这个key,那说明他是一个左括号,从map里取得相应的右括号, 把它push进stack里;否则的话,它就是右括号, 需要pop出stack里的第一个字符然后看它是否相等当前的字符。如果不相等,则返回false。 3. 循环结束后,如果stack不为空,说明还剩一些左括号没有被闭合, 返回false,否则返回true
var isValid = function(s) { const mapping = new Map(); const stack = []; mapping.set('(',')') mapping.set('[',']') mapping.set('{','}') for(let i = 0; i < s.length; i++) { if(mapping.has(s[i])){ stack.push(mapping.get(s[i])) }else if(stack.pop()!==s[i]){ return false; } } if(stack.length!=0){ return false; } return true; };
转载地址:http://dqfki.baihongyu.com/