算法

算法 - 栈类型

2021-02-27  本文已影响0人  羽晞yose

栈的应用场景

二进制

二进制

有效的括号

leeCode第20题

该系列并没有完全按照官方答案或参考他人答案,纯粹自己实现。本人并不纠结于是否有更好的实现,纯粹学习思路,毕竟前端算法除了面试基本也用不上了。花过多精力并不值得

/**
 * @param {string} s
 * @return {boolean}
 */
const isValid = function(s) {
    const stack = []
    const signDict = {
        '}': '{',
        ')': '(',
        ']': '['
    }
    const leftSign = ['(', '{', '[']
    const rightSign = [')', '}', ']']

    if (s.length % 2) return false

    for (let i = 0; i < s.length; i++) {
        const str = s[i]
        const isLeftSign = leftSign.includes(str)
        const isRightSign = rightSign.includes(str)

        if (isLeftSign) stack.push(str)
        if (isRightSign) {
            const lastSign = stack.pop()
            return lastSign === signDict[str]
        }
    }

    if (stack.length) return false
}
上一篇 下一篇

猜你喜欢

热点阅读