/*
 * [20] 有效的括号
 */

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
  const stack = []
  const map = {
    ')': '(',
    '}': '{',
    ']': '['
  }
  for (let i = 0; i < s.length; i++) {
    const p = stack[stack.length - 1];
    const str = s[i]
    if (p && p === map[str]) {
      stack.pop()
    } else {
      stack.push(str)
    }
  }
  return stack.length === 0
};

console.log(isValid('()'))
console.log(isValid('()[]{}'))
console.log(isValid('()[]{}{'))