LeetCode热题(JS版)- 20. 有效括号

79 阅读1分钟

题目

给定一个仅包含字符'('')''{''}''[' 和 ']'的字符串s,确定输入字符串是否有效。

输入字符串在以下情况下有效:

  1. 打开的括号必须用相同类型的括号关闭。
  2. 必须按照正确的顺序关闭括号。
  3. 每个闭括号都有一个相应的相同类型的开括号。

示例 1:

输入: s = "()"
输出: true

示例 2:

输入: s = "()[]{}"
输出: true

示例 3:

输入: s = "(]"
输出: false

思路

function isValid(s: string): boolean {
  const stack = [];
  // 出栈条件
  const map = {
    '(': ')',
    '[': ']',
    '{': '}',
  };
  for (let i = 0; i < s.length; i++) {
    const char = s[i];
    const last = stack[stack.length - 1];
    if (last != null && map[last] === char) stack.pop();
    else stack.push(char);
  }

  return !stack.length;
}

image.png