有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 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
    };
相关推荐
我是小路路呀22 分钟前
vue开始时间小于结束时间,时间格式:年月日时分
前端·javascript·vue.js
我自纵横202335 分钟前
JavaScript 中常见的鼠标事件及应用
前端·javascript·css·html·计算机外设·ecmascript
li_Michael_li35 分钟前
Vue 3 模板引用(Template Refs)详解与实战示例
前端·javascript·vue.js
梭七y6 小时前
【力扣hot100题】(032)排序链表
算法·leetcode·链表
SsummerC6 小时前
【leetcode100】数组中的第K个最大元素
python·算法·leetcode
编程绿豆侠6 小时前
力扣HOT100之链表:206. 反转链表
算法·leetcode·链表
记得早睡~8 小时前
leetcode51-N皇后
javascript·算法·leetcode·typescript
拉不动的猪10 小时前
vue自定义指令的几个注意点
前端·javascript·vue.js
yanyu-yaya10 小时前
react redux的学习,单个reducer
前端·javascript·react.js
加瓦点灯10 小时前
观察者模式:解耦对象间的依赖关系
开发语言·javascript·观察者模式