美文网首页
JS判断包含()[]{}的字符串是否为有效闭合括号

JS判断包含()[]{}的字符串是否为有效闭合括号

作者: 傲慢的上校130 | 来源:发表于2024-04-23 15:37 被阅读0次

JS判断包含()[]{}的字符串是否为有效闭合括号

一、定义

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true

二、两种方法

  1. 从字符串最中心一对入手,简单粗暴 ,判断其是否为有效括号对,是就置换为空
   function bracketCheck1(str){
      if(!str || typeof str !== 'string'){ // 入参是否有效
           return false
       }
       str = str.replace(/\s/g, '') // 去空
       if(str.length % 2 !== 0){ // 长度为偶数才行
           return false
       }
       while(str.includes('{}') || str.includes('[]') || str.includes('()')){
           str = str.replace('{}','')
           str = str.replace('[]','')
           str = str.replace('()','')
       }
       return str === '' // 最后看字符串是否为空
   }
  1. 利用数组,先进后出, 是左括号就把对应的右括号存入数组,不是左括号就从数组取出一位与其比较
    function bracketCheck2(str){
       if(!str || typeof str !== 'string'){ // 入参有效
            return false
        }
        str = str.replace(/\s/g, '') // 去空
        if(str.length % 2 !== 0){ // 长度为偶数才行
            return false
        }
        const obj = {'(': ')', '[': ']', '{': '}'}
        const arr = []
        for(let i = 0; i < str.length; i ++){
            if(str[i] === '{' || str[i] === '[' || str[i] === '('){ // 是有效左括号
                // 就把相对应的右括号加入数组
                arr.push(obj[str[i]])
            }else{ // 非左括号
                if( arr.length === 0 ){
                    // 数组为空直接返回false
                    return false
                }else{
                    // 截取数组最后一位,与当前字符串比较
                    let p = arr.pop()
                    if(p !== str[i]){
                        // 不同就返回false
                        return false
                    }
                }
            }
        }
        return arr.length === 0 // 最后看数组是否被取空
    }

以上,如有谬误,敬请指正!

相关文章

  • 2021-03-25

    js 判断由"()[]{}"6种括号组成的字符串是否合法 所有括号必须闭合 左括号必须在正确的位置闭合 原理:创建...

  • 栈-E20-有效的括号

    题目 概述:给你一个只包含括号的字符串,判断该字符串中括号是否正确闭合,正确闭合的条件如下: 左括号必须与相同类型...

  • 要成功就做一百题-93

    题目名称 有效的括号判断 描述 输入的字符串只包含{ [] } ()三种括号的组合,判断输入是否是有效的括号,如下...

  • 20. valid Parentheses 有效括号

    题目 给定一个字符串 s 包含一组括号,判断这组括号是否是有效的。有效定义:(1)开括号必须由闭括号关闭(2)关闭...

  • leetcode_41有效的括号

    判断字符串中的括号是否均可以闭合,本次的思路是,从左往右循环查找右括号,遇到右括号则进行对应的闭合(这时意味着在该...

  • Swift 有效的括号 - LeetCode

    题目: 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效...

  • Leetcode 20 有效的括号

    有效的括号 题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 ...

  • leetcode学习整理

    1.20 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。...

  • 20. 有效的括号

    20.有效的括号 给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效...

  • 8,有效的括号/数组与字符串

    有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字...

网友评论

      本文标题:JS判断包含()[]{}的字符串是否为有效闭合括号

      本文链接:https://www.haomeiwen.com/subject/kxhwxjtx.html