有效的括号

给定一个只包括 '(',')','{','}','','' 的字符串 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
    };
相关推荐
mayaairi2 小时前
JS DOM属性操作完全指南:内容、样式与自定义属性
开发语言·前端·javascript
avi91112 小时前
Threejs新版本后glb导出提示.x问题GLTFExporter,替代3dmax
开发语言·前端·javascript·threejs·glb·gltfexporter
用户298698530143 小时前
React 中 Word 文档转图片的实践方案
前端·javascript·react.js
Csvn3 小时前
异步并发控制:手写并发池、竞态防护与取消的完整方案
前端·javascript
csuzhucong3 小时前
二十一 - 四十阶魔方
javascript·css·html
土司大王3 小时前
LeetCode hot100——二叉树的最大深度
算法·leetcode·职场和发展
专业抄代码选手3 小时前
06|双缓冲与 Commit:让 Fiber 支持第二次渲染
前端·javascript·react.js
圣保罗的大教堂3 小时前
leetcode 3720. 大于目标字符串的最小字典序排列 中等
leetcode
天才熊猫君3 小时前
通用虚拟滚动表格行拖拽排序:从思路到完整实现
前端·javascript
xiaominlaopodaren3 小时前
three.js最小地图运行时(九):TileKey 线框与 cursor 坐标探针
javascript·gis·three.js