题解 | #有效括号序列#

有效括号序列

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
};

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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务