20. 有效的括号 JavaScript实现

20. 有效的括号

一、思路

利用栈实现括号匹配的经典问题
1、将左括号入栈。并且用一个哈希表存储左右括号:右括号为键,左括号为值。(这样设计,当遇到右括号的时候,就可以检查对应的哈希表里的左括号是否和栈顶元素匹配)
2、遇到右括号将栈顶元素出栈,并且进行合法性检查。

二、代码实现

var isValid = function(s) {
    // 维护一个map,key为右括号,value为左括号
    const map = new Map([  // 里面是一个二维数组
        [')','('],
        [']','['],
        ['}','{']
    ])
    let stack = []

    // 长度为奇数不可能
    if(s.length % 2 != 0) return false

    // 遍历字符串
    for(let i=0;i<s.length;i++){
        // 左括号进栈
        if(!map.has(s[i])){
            stack.push(s[i])
        }else{
            // 否则就是右括号,在map中找到左括号与栈顶对比,匹配就出栈
            let left = map.get(s[i])
            if(left == stack[stack.length-1]){
                stack.pop()  
            }else{
                return false
            }
        }
    }
    // 查看栈中的剩余即可
    return stack.length ? false : true
}; 

你可能感兴趣的:(leetcode刷题,#,栈和队列,数据结构,javascript,算法)