有效括号

310 阅读1分钟

解题思路

判断括号的有效性可以使用【栈】这一数据结构来解决

我们对给定字符串进行遍历,当遇到一个左括号的时候,期望可以在后续的遍历中得到一个相对应的闭合括号, 此时我们需要定义一个哈希表,我们可以使用哈希表存储每一种括号。哈希表的键为右括号,值为相同类型的左括号。

在遍历结束后,如果栈中没有左括号,说明我们将字符串 ss 中的所有左括号闭合,返回 True,否则返回 False。

var isValid = function(s) {
    const n = s.length
    if(n % 2 === 1)  return false

    const pairs = new Map([
        [')', '('],
        [']', '['],
        ['}', '{']
    ])

    const task = []
    for(let ch of s) {
        if(pairs.has(ch)) {
            if(!task.length || task[task.length -1] !== pairs.get(ch)) {
                return false
            }
            task.pop()
        } else {
            task.push(ch)
        }
    }
    return !task.length
};