Skip to content

LeetCode题解:20. 有效的括号,栈,JavaScript,详细注释 #142

@chencl1986

Description

@chencl1986

原题链接:https://leetcode-cn.com/problems/valid-parentheses/

解题思路:

  1. 遍历数组,遇到左括号时,将对应的右括号存入栈。
  2. 遇到右括号时,将栈顶元素pop,查看两者是否相同。
  3. 若不相同,表示存在无效括号。
  4. 遍历完成后,查看字符串长度,如果字符串不为空,表示存在无效括号,如'{'。
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
  let stack = [];
  let map = {
    '(': ')',
    '[': ']',
    '{': '}',
  };

  for (const char of s) {
    // 遇到左括号时,向栈中存入右括号
    if (map[char]) {
      stack.push(map[char]);
    } else if (stack.pop() !== char) {
      // 遇到右括号时,判断当前括号是否相等。
      // 如果不相等则表示遇到了无效括号
      return false;
    }
  }

  // 退出循环时,如果栈不为空,则表示存在无效括号
  // 此处为了避免字符串长度为奇数的情况,如'{'
  return !stack.length;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions