Skip to content

Latest commit

 

History

History
40 lines (33 loc) · 964 Bytes

20.md

File metadata and controls

40 lines (33 loc) · 964 Bytes

Leetcode 20. 有效的括号

20. 有效的括号

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
  if (s.length == 0) {
    return true;
  }
  let stack = [];
  // 左右括号对照表
  let obj = {
    ")": "(",
    "]": "[",
    "}": "{"
  };

  // 遍历字符串
  for (let i = 0; i < s.length; i++) {
    const current = s[i];
    // 如果 current 等于三个左括号中的一种,直接压入栈中
    if (current === "(" || current === "[" || current === "{") {
      stack.push(current);
    } else if (obj[current] != stack.pop()) {
      // 如果 current 等于三个右括号中的一种,则从对照表中,取出对应的左括号
      // 并且与栈中最后一个元素进行配对,配对失败说明不是有效的括号
      return false;
    }
  }
  return stack.length === 0; // 最后的栈必须为空才能是有效括号
};