【leetcode】20.有效的括号js

碎碎念

啊啊啊啊昨天考完六级!!感觉要挂、、、写点算法手撕压压惊

题目

解答:栈

javascript 复制代码
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    const stack = []
    const str = Array.from(s)
    const left = new Set(['(', '[', '{'])
    const right = new Set([')', ']', '}'])
    while (str.length > 0) {
        const cur = str[0]
        str.shift()
        if (left.has(cur)) {
            stack.push(cur)
        } else if (right.has(cur)) {
            if (stack.length === 0) return false
            const top = stack.pop()
            const match = (top === '(' && cur === ')' || top === '[' && cur === ']' || top === '{' && cur === '}')
            if (!match) {
                return false
            }
        }
    }
    return stack.length === 0
};

写c++的时候顺手了while条件写成栈非空,但其实这里更关注处理字符串,最后再判断栈是不是空。

解答:栈+哈希表(优化,题解学的)

javascript 复制代码
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    if(s.length % 2 === 1) return false
    const mp = {'(': ')', '[': ']', '{': '}'}
    const stack = []
    for (const c of s) {
        if (mp[c]) {
            // 如果是左括号,对应的右括号入栈
            stack.push(mp[c])
        } else if (stack.length === 0 || stack.pop() !== c) {
            // 如果是右括号,检查栈是否为空或者是不是预期的右括号
            return false
        }
    }
    return stack.length === 0
};

mpc能够判断是左括号是因为mp里的键都是左括号,如果c是右括号那么mpc是undefined,到if里判断等价于false。

(太神了居然想的是放入对应的右括号)

相关推荐
香芋芋圆4 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
琥珀色糖4 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
INS_KF4 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
宿6745 小时前
vue3-async
前端·javascript·vue.js
Tisfy5 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
excel6 小时前
Nuxt + Twin CSS 中宽度超过屏幕时底部出现空白的原因与解决方案
前端·javascript
木井巳8 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
开心大爆炸8 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun28 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
Navigator_Z8 小时前
LeetCode //C - 1224. Maximum Equal Frequency
c语言·算法·leetcode