[路飞]_leetcode_20.有效的括号

117 阅读1分钟

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。

解题思路

这一题可以利用栈的思想,

  1. 当遇到 ‘(’ '{' '[' 字符串时入栈
  2. 当遇到 ‘(’ '{' '[' 字符串时先判断一下是否是对称的括号
    1. 如果是对称的则出栈
    2. 如果不对称则返回false
  3. 执行完,当栈为空时则是有效括号

代码

var isValid = function(s) {
    let stack = [];
    let map = new Map([
        [')', '('],
        ['}', '{'],
        [']', '[']
    ]
    )
    for (k of s) {
        if (map.has(k)) {
            if (stack[stack.length-1] !== map.get(k)) return false
            stack.pop();
        } else {
            stack.push(k)
        }
    }
    return !stack.length;
};