有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 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
    };
相关推荐
F_D_Z13 小时前
哈希表解Two Sum问题
python·算法·leetcode·哈希表
前端不太难13 小时前
如何给 RN 项目设计「不会失控」的导航分层模型
前端·javascript·架构
用户40993225021213 小时前
Vue3中v-show如何通过CSS修改display属性控制条件显示?与v-if的应用场景该如何区分?
前端·javascript·vue.js
Zyx200713 小时前
JavaScript 中 this 的设计哲学与运行机制
javascript
A242073493013 小时前
JavaScript图表制作:从入门到精通
开发语言·javascript·信息可视化
LYFlied13 小时前
【每日算法】LeetCode124. 二叉树中的最大路径和
数据结构·算法·leetcode·面试·职场和发展
瘦的可以下饭了13 小时前
Day03-APIs
javascript
BD_Marathon13 小时前
Vue3_简介和快速体验
开发语言·javascript·ecmascript
写代码的皮筏艇13 小时前
数组 forEach
前端·javascript
running up14 小时前
Vite 全面解析:特性、对比、实践及最新演进
javascript·typescript