给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
//使用栈的思路来解var isValid = function(s) {//首先括号是成双成对的,如果 s.length 不是 2 的倍数,则不是有效的括号const n = s.length;if (n % 2 === 1) {return false;}//定义hash表来关联有效括号const pairs = new Map([[')', '('],[']', '['],['}', '{']]);//定义栈结构const stk = [];//遍历字符串 ch char 字符for (let ch of s){//如果 hash 表中有该键值对的话if (pairs.has(ch)) {//如果栈为空,或者栈的最后一个数据不等于对应的括号关系,则返回 falseif (!stk.length || stk[stk.length - 1] !== pairs.get(ch)) {return false;}//遇到对应关系的括号后则出栈stk.pop();}else {//没有对应关系的括号则入栈stk.push(ch);}};return !stk.length;};
