题解 | #有效括号序列#

有效括号序列

http://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

栈 + 词典对象

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param s string字符串 
 * @return bool布尔型
 */
export function isValid(s: string): boolean {
    // write code here
    // 要求:空间复杂度 O(n),时间复杂度 O(n)
    const tokenDict = {
        '[':']',
        '{':'}',
        '(':')'
    }
    const len = s.length

    // 奇数长度肯定不闭合
    if(len % 2){return false}
    // 第一个不是左边
    if(!tokenDict[s[0]]){
        return false
    }
    
    // 右边待出栈
    const rightArr: string[] = []

    for(let i = 0; i < len; i++){
        // 尝试查找对应的右边
        const rightKey = tokenDict[s[i]]
       
        if(rightKey){
            // 把右边推入栈,等待一个右边
            rightArr.push(rightKey)
        }else{
            // 当s[i]为右边,出栈,并查看栈顶是不是一样
            if(s[i] !== rightArr.pop()){
              return false
            }
        }

    }
    
    
    return !rightArr.length
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务