zoukankan      html  css  js  c++  java
  • 20.有效的括号(栈L)

    /**
     * @param {string} s
     * @return {boolean}
     */
     var isValid = function (s) {
        const len = s.length
        /*奇数长度直接返回false*/
        if (len % 2) return false
        /*所匹配的字符映射 */
        const map = new Map([
            [')', '('],
            ['}', '{'],
            [']', '['],
        ])
        /**建立栈 */
        let stack = []
        for (let i = 0; i < len; i++) {
            //string charAt比直接下标访问要快
            const si = s.charAt(i)
            const mapSi = map.get(si)
            /**
             * 判断value是否与栈顶元素一致
             * 相同从栈中弹出抵消
             * 不同要将value压入栈中
             * 直到栈中元素全部被抵消 也就是length为0则为true
             */
            if (mapSi) {
                //如果能从Map中找到value
                if (mapSi !== stack[stack.length - 1]) {
                    stack.push(mapSi)
                    break
                }
                stack.pop()
            } else {
                stack.push(si)
            }
        }
        return stack.length === 0
    }
  • 相关阅读:
    前端面试题
    js collection
    javascript变量声明提升(hoisting)
    css3动画
    神奇的meta
    wap站bug小结
    前端collection
    js拾遗
    prototype之初印象
    自定义scrollBottom的值
  • 原文地址:https://www.cnblogs.com/BlueCc/p/14636793.html
Copyright © 2011-2022 走看看