有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 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
    };
相关推荐
三思而后行,慎承诺5 分钟前
详解React Fiber架构中,reconcile阶段的具体工作流程
javascript·react.js·ecmascript
前端太佬6 分钟前
微信公众号网页登录:前端视角下的技术实现精要
前端·javascript·微信
前端太佬8 分钟前
微信小程序支付全流程实战指南(Node.js后端篇)
前端·javascript·微信小程序
资深前端外卖员12 分钟前
【nodejs高可用】Nodejs应用安全防范的问题总结
前端·javascript
OpenC++14 分钟前
【C++QT】Layout 布局管理控件详解
c++·经验分享·qt·leetcode
前端大白话22 分钟前
Vue2和Vue3语法糖差异大揭秘:一文读懂,开发不纠结!
javascript·vue.js·设计模式
tianchang24 分钟前
JS 中 Map 的概念与使用
前端·javascript
Jenlybein24 分钟前
[ Javascript 面试题 ]:提取对应的信息,并给其赋予一个颜色,保持幂等性
前端·javascript·面试