描述
给定一个字符串所表示的括号序列,包含以下字符: ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括号序列。
括号必须依照 “()” 顺序表示, “()[]{}” 是有效的括号,但 “([)]” 则是无效的括号。
样例
- 样例 1:输入:"([)]"
输出:False- 样例 2:输入:"()[]{}"
输出:True
挑战
O(n)的时间,n 为括号的个数。
解析
isValidParentheses = function (s) {let stack = [];let len = s.length;let flag = true;for (let i = 0; i < len; i++) {let char = s.charAt(i);let isEmpty = stack.length === 0;let stackTop = stack[stack.length - 1];const match = function (matchStr) {if (!isEmpty && stackTop === matchStr) {stack.pop();} else {flag = false;}}if (char === '[' || char === '{' || char === '(') {stack.push(char);} else if (char === ']') {match('[')} else if (char === '}') {match('{')} else if (char === ')') {match('(');} else {return false;}}if(stack.length !== 0) {return false;}else {return flag;}
}