算法:有效的括号(入栈出栈)

2023-12-13 15:36:40

时间复杂度 O(n)?空间复杂度 O(n+∣Σ∣),其中?Σ?表示字符集,本题中字符串只包含?6?种括号

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    const map = {"(":")","{":"}","[":"]"}
    let arr = []
    // 如果输入的数组为奇数时一定不满足条件
    if(s.split('').length%2!==0){
        return false
    }
    for(let item of s){
        // 如果当前括号为左括号,将右括号压入栈
        if(map[item]){
            arr.push(map[item])
        }else{
            // 如果当前的括号是右括号,则弹出栈尾的括号判断是否等于当前的括号
            // 等于则继续循环,不等于则括号不匹配
            if (arr.pop()!== item) {
                return false;
            }
        }
    }
    return arr.length === 0
};

文章来源:https://blog.csdn.net/sdhshsjh/article/details/134902586
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。