text: /*
   * @lc app=leetcode.cn id=20 lang=javascript
   *
   * [20] 有效的括号
   *
   * https://leetcode-cn.com/problems/valid-parentheses/description/
   *
   * algorithms
   * Easy (38.75%)
   * Total Accepted:    99.5K
   * Total Submissions: 255.1K
   * Testcase Example:  '"()"'
   *
   * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。
   * 
   * 有效字符串需满足：
   * 
   * 
   * 左括号必须用相同类型的右括号闭合。
   * 左括号必须以正确的顺序闭合。
   * 
   * 
   * 注意空字符串可被认为是有效字符串。
   * 
   * 示例 1:
   * 
   * 输入: "()"
   * 输出: true
   * 
   * 
   * 示例 2:
   * 
   * 输入: "()[]{}"
   * 输出: true
   * 
   * 
   * 示例 3:
   * 
   * 输入: "(]"
   * 输出: false
   * 
   * 
   * 示例 4:
   * 
   * 输入: "([)]"
   * 输出: false
   * 
   * 
   * 示例 5:
   * 
   * 输入: "{[]}"
   * 输出: true
   * 
   */
  
  /**
   * @param {string} s
   * @return {boolean}
   */
  var isValid = function (s) {
    let stack = [];
  
    let arr = s.split("");
    for (let item of arr) {
      if (stack.length === 0) {
        stack.push(item);
        continue;
      }
  
      let top = stack[stack.length - 1]
      if (top === item || item.codePointAt() - top.codePointAt() > 2 || top.codePointAt() - item.codePointAt() > 2) {
        stack.push(item);
      } else {
        stack.pop();
      }
    }
  
  
    return stack.length === 0
  };