有效的括号

给定一个只包括 '(',')','{','}','','' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 :

输入:s = "()"

输出:true

示例 2:

输入:s = "()\[\]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

解法一:

js 复制代码
    const isValid = function (s) {
        if (s.length % 2 === 1) return false
        let i=0,n=s.length/2
        while (i<n){
            s=s.replace('{}','')
            s=s.replace("()",'')
            s=s.replace("[]",'')
            i++
        }
        return s === ''
    };

解法二:

js 复制代码
    const isValid = function (s) {
        if (s.length % 2 === 1) return false
        let i=0,n=s.length/2
        for (let j = 0; j < n; j++) {
            s=s.replace('{}','')
            s=s.replace("()",'')
            s=s.replace("[]",'')
            i++
        }
        return s === ''
    };

解法三:

js 复制代码
    const isValid = function (s) {
        if (s.length % 2 === 1) return false;
        let stack = [], map = {")":"(","}":"{","]":"["};
        for (const ch of s) {
            if (map[ch]){
                if (!stack.length || stack[stack.length-1]!==map[ch]) return false
                stack.pop()
            } else {
                stack.push(ch)
            }
        }
        return !stack.length
    };
相关推荐
yi01117 分钟前
LeetCode 134 加油站:从 双循环暴力 演变到 贪心
linux·算法·leetcode
0nirvana021 分钟前
从普通 script 到 ESM:一文搞懂 JavaScript 模块、IIFE 和 window
javascript
yi0111 小时前
DAY 14: LeetCode 394. 字符串解码|递归和栈到底怎么处理嵌套?
数据结构·笔记·python·算法·leetcode
wshzd1 小时前
LLM之Agent(104)|DeepSeek-Harness(十三)ReactLoopAgent 总览:kick → turn → step
开发语言·前端·javascript
P.D.Wei2 小时前
[Leetcode 1614] 括号的最大嵌套深度
算法·leetcode·职场和发展
blxr_2 小时前
力扣hot100寻找重复数https://leetcode.cn/problems/find-the-duplicate-number/
算法·leetcode·职场和发展
天天喝旺仔3 小时前
浏览器渲染原理:从解析 HTML/CSS、构建渲染树到重排重绘与首屏优化
前端·javascript·css·性能优化·html
_不会dp不改名_3 小时前
leetcode_1614嵌套括号的最大深度
算法·leetcode·职场和发展
Days20504 小时前
时间胶囊项目正式发布
javascript·gpt·php
朱 欢 庆4 小时前
el-table-v2 虚拟表格组件
前端·javascript·vue.js