首页 > 其他分享 >使用js有效括号匹配封装函数

使用js有效括号匹配封装函数

时间:2024-05-11 11:32:01浏览次数:20  
标签:false 匹配 js char 括号 isValidParentheses 封装 stack

点击查看代码
function isValidParentheses(str) {
    // 定义一个栈,用于存储待匹配的左括号
    let stack = [];
    // 定义一个对象,用于快速判断括号是否成对
    const pairs = { ')': '(', '}': '{', ']': '[' };

    // 遍历输入字符串
    for (let char of str) {
        // 如果是左括号,将其压入栈中
        if (Object.values(pairs).includes(char)) {
            stack.push(char);
        }
        // 如果是右括号
        else if (Object.keys(pairs).includes(char)) {
            // 如果栈为空,说明没有匹配的左括号,返回false
            if (stack.length === 0) return false;
            // 弹出栈顶元素,查看是否与当前右括号匹配
            let top = stack.pop();
            if (pairs[char] !== top) {
                // 不匹配,返回false
                return false;
            }
        }
        // 如果字符既不是左括号也不是右括号,直接忽略或根据需求处理
        else {
            // 这里假设输入只包含括号,不做特殊处理
        }
    }

    // 如果遍历完字符串后栈为空,说明所有括号都已正确匹配,返回true;否则返回false
    return stack.length === 0;
}

// 测试代码
console.log(isValidParentheses("()[]{}")); // 应该输出 true
console.log(isValidParentheses("(]"));     // 应该输出 false
console.log(isValidParentheses("([)]"));   // 应该输出 false
console.log(isValidParentheses("{[]}"));   // 应该输出 true

标签:false,匹配,js,char,括号,isValidParentheses,封装,stack
From: https://www.cnblogs.com/zsnhweb/p/18186167

相关文章

  • Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\no
     #参考:https://stackoverflow.com/questions/69541725/error-cannot-find-module-c-program-files-nodejs-node-modules-npm-bin-node-mod --- #问题描述在一直倒腾重新安装nodejs时报的一个这样的错,记录一下 在执行npm-v时报了如标题的错,见下图 --- #原因......
  • [idea]mvn install没有问题,idea build报错程序包com.alibaba.fastjson不存在
    现象:1、mvninstall没有问题2、ideabuild报错程序包com.alibaba.fastjson不存在3、File->Settings->Build,Execution,Deployment->Compiler自动编译选项也是勾选的解决:1、委托maven构建和运行,确实能执行;但是运行都要执行maveninstall,速度慢 -- 不推荐 2、在......
  • Mapbox GL JS access token 问题
    使用MapboxGLJS时出现如下错误Error:AvalidMapboxaccesstokenisrequiredtouseMapboxGLJS.Tocreateanaccountoranewaccesstoken,visithttps://account.mapbox.com/解决方法:(1)MapBox在内网使用时,accesstoken不能使用,导致局域网内地图服务不能使用,只需修......
  • js数组常用方法
    一、改变原数组的方法       1.push()末尾添加数据       2.pop()末尾出删除数据       3.unshift()头部添加数据       4.shift()头部删除数据       5.reverse()翻转数组       6.sort()排序       7.splice() 截取数组  ......
  • Python进阶之封装
    【一】面向对象的三大特性面向对象的三大特性:封装、继承、多态其中最重要的就是封装,封装就是将数据和功能整合到一起我们可以对封装在类和对象中的属性进行访问的控制,有隐藏的和开发的接口【1】什么是封装封装是对具体对象的一种抽象封装就是将某些数据和功能隐藏起来,只......
  • h5使用js拉起微信支付
    近期,业务需求对接了微信支付,做个总结。web网页想要拉起微信支付,有两种方法:H5下单支付,JSAPI支付。首先纯前端做不了微信支付,必须配合后端才能通过微信的下单请求。接下来说说这两种方法的区别。H5微信下单支付这种支付方式是用户在浏览器端打开网页,通过下单等操作,与后端交互......
  • Json转Go在线工具
    1、可以将Json字符串在线自动解析校验格式化为go的struct结构体(严格按照Golang标准执行生成struct结构体)2、提供将任意复杂,简单格式的Json字符串转换生成go的struct结构体3、支持Json格式错误提示,不会格式化不符合规范的Json字符串,以保证struct结构体的准确性4、支持选择是......
  • Json压缩转义工具
    1,实现在线压缩Json字符串,压缩Json可以减少在传输过程中消耗的流量,提高传输速度2,Json压缩转义功能也很常用,有些Json被转义过的,可以利用此工具进行去除转义,格式化Json3,Json格式化的时候要确保Json在此之前没有被转义过,转义过的Json不会被格式化,需要先去除转义哦免费使用地址:h......
  • Json生成Java实体类工具
    1,贴入json内容,Javabean的类名、包名即可自动生成JavaBean代码,并可以直接打包下载源码2,支持将任意复杂/简单格式的Json字符串生成Javabean实体类3,提供Json格式错误提示,不会格式化不符合规范的Json字符串,确保了Javabean实体类的准确性4,如果你的Json字段包含系统关键字,又不......
  • Xml和Json在线互转工具
    1、支持将Xml数据转为Json字符串格式2、支持将Json字符串转换为Xml格式的数据3、Json转为Xml数据时,提供自动检测Json格式是否正确,确保转换的Xml数据是准确的4、提供详细的Xml数据和Json字符串数据5、提供示例xml和json示例,供大家测试使用免费使用工具地址:http://tools.linu......