有效的括号

给定一个只包括 '(',')','{','}','','' 的字符串 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
    };
相关推荐
土司大王14 分钟前
LeetCode hot100——153.寻找旋转排序数组中的最小值:Java 二分模板与 O(log n) 分析
java·算法·leetcode
土司大王37 分钟前
LeetCode hot100——4.寻找两个正序数组的中位数:Java 二分第K小 递归裁剪
java·算法·leetcode
福兮说1 小时前
纯前端把图片压缩到指定体积:canvas.toBlob 配合二分查找
前端·javascript·canvas·图片处理
志尊宝1 小时前
Vue3 零基础每日笔记(018):按键与鼠标修饰符——回车搜索、Ctrl+S 保存这样写
javascript·vue.js·笔记
6Hzlia2 小时前
【Classic 150 刷题计划】 LeetCode 123. 买卖股票的最佳时机 III | C++ 状态机动态规划与通用交易拓展
c++·算法·leetcode
可乐鸡翅yeah_2 小时前
HLS流媒体首屏起播慢深度优化,从分片、索引、播放器全链路调优
开发语言·javascript·ecmascript·m3u8·m3u8在线
开开心心就好3 小时前
低年级识字练笔顺工具,电脑和安卓端都能用
前端·javascript·网络·安全·scala·erlang·语音识别
杨利杰YJlio3 小时前
ITSK PE 26U5 测试版解读:组件完善、VMD 修复与服务器支持边界
前端·javascript·后端
夏幻灵3 小时前
Vue / React 列表渲染中的 key:为什么没有 key,Checkbox 可能“对号跑错”?
前端·javascript·vue.js