【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。

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

相关推荐
小爬的老粉丝7 分钟前
JavaScript 纯前端预览 WPS:先识别容器,再路由解析器
前端·javascript·wps
半夏微凉半夏殇1 小时前
x11与weston对比,优先选哪个
leetcode·均值算法·eclipse
满栀5851 小时前
状态管理:Redux、Vuex、Pinia 核心区别
前端·javascript·typescript
酸菜。2 小时前
dw_axi_dmac总结
linux
神奇霸王龙2 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
大龄码农有梦想4 小时前
Vue + BPMN.js + Camunda:搭建企业级流程设计器完整实践
javascript·vue.js·流程设计器·bpmn.js·bpmn·流程审批·工作流设计器
Eloudy4 小时前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
小绫网络安全4 小时前
Kali Linux渗透测试入门教程:从零搭建到实战攻防
linux·运维·服务器
西安景驰电子5 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
ZJU_统一阿萨姆5 小时前
【DSH】如何将 DeepSeek Harness 嵌入生产环境?万字解构 DeepSeek Agent Harness 的运行机制与安全边界
前端·javascript·安全