有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 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
    };
相关推荐
西西学代码8 分钟前
Flutter---折线图(使用外部库)
前端·javascript·flutter
坚持学习前端日记9 分钟前
Android JS桥技术深度解析
android·开发语言·javascript
json{shen:"jing"}35 分钟前
07_表单输入绑定
java·前端·javascript
yyt3630458411 小时前
K 线图高性能窗口化渲染
前端·javascript·css·vue.js·gitee·vue
ss2731 小时前
高版本node启动RuoYi-Vue若依前端ruoyi-ui
前端·javascript·vue.js
饼干,1 小时前
模拟试卷2
前端·javascript·easyui
im_AMBER1 小时前
Leetcode 94 合并零之间的节点
数据结构·c++·笔记·学习·算法·leetcode
winfredzhang1 小时前
零依赖的艺术:用原生 JS 打造“ZenReader”沉浸式阅读器
javascript·frontend·uxdesign·productivity·#webdevelopment
仙人掌一号2 小时前
React 白屏机制原理分析[共1500字,阅读时长8min]
前端·javascript·面试
sophie旭2 小时前
Suspense+React.lazy--组件渲染如何暂停 → 等待 → 恢复
前端·javascript·react.js