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

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

相关推荐
aaaa954726651 小时前
终端与IDE形态Vibe Coding实测:主流AI编程工具迁移与迭代对比
javascript·react.js·ecmascript
Misnearch1 小时前
Leetcode热题100
算法·leetcode·职场和发展
晓得迷路了2 小时前
栗子前端技术周刊第 133 期 - Angular v22、React 编译器 Rust 版、pnpm 11.5...
前端·javascript·css
buhuizhiyuci2 小时前
【Linux篇】数字世界程序运行寻找地址的指南针——环境变量的详解
linux·运维·服务器
Shadow(⊙o⊙)2 小时前
信号1.0,信号概念、signal()处理、前后台进程、闹钟设置、初识信号三张表。
linux·运维·服务器·开发语言·c++
云浪2 小时前
别再让用户干等了:用 Express + SSE 实现《红楼梦》AI 问答实时输出
javascript·后端·node.js
++==2 小时前
git的安装以及基本命令使用、远程仓库的操作、vscode连接远程仓库进行项目的上传、gitee的使用
linux·git·gitee
鹤落晴春2 小时前
RH124问答4:创建、查看和编辑文本文件
linux·运维
晓13132 小时前
【Cocos Creator 3.x】篇——第五章 项目实战优化技术
前端·javascript·游戏引擎