leetcode-20-有效的括号

109 阅读1分钟

image.png leetcode原题

解题思路

  • 由于括号闭合顺序是先入后出与栈数据结构一样,因此使用栈数据结构来解决问题,定义map变量创建栈存储左括号

  • 通过for of遍历字符串s

  • 当遇到左括号时,通过push入栈stack

  • 当与到右括号时,通过pop出栈stack并判断括号类型是否一样,不一样的话return false

/**
 * @param {string} s
 * @return {boolean}
 */
let isValid = function(s){
    let size = s.length
    if(size % 2 !== 0return false
    let map = new Map([
        ["]","["],
        [")","("],
        ["}","{"],
    ])
    let stack = []
    for(ch of s){
        if(map.has(ch)){
            if(!stack.length || stack[stack.length - 1] !== map.get(ch)){
                return false
            }
            stack.pop()
        }else{
            stack.push(ch)
        }
    }
    return stack.length === 0
}