题解 | #有效括号序列#

有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2?tpId=295&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Fcompany

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return bool布尔型
 */
function isValid( s ) {
    // write code here
    let stateMap = {
        '(': 1,
        ')': -1,
        '{': 2,
        '}': -2,
        '[': 3,
        ']': -3,
    }
    let state = []
    for (let k of s) {
        if (stateMap[k] > 0) {
            state.unshift(stateMap[k])
        } else {
            if (state.length === 0) {
                state.unshift(stateMap[k])
                break
            }
            if (state[0] + stateMap[k] !== 0) {
                break
            } else {
                state.shift()
            }
        }

    }
    if (state.length === 0) {
        return true
    }
    return false
}
module.exports = {
    isValid : isValid
};

借鉴有限状态自动机的思路,初始状态为有效,非初始状态为无效,只是这里的状态并不有限,可以看成是借数组管理的“有限状态”

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 20:15
还能挽救吗?找同学帮忙看了一下 字节怎么能如此对我
牛客26396789...:你这是严重红线,被发现你自己永远进不去,你那个同学直接走人,你还敢宣扬
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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