当前位置: 首页 > article >正文

LeetCode热题100-有效的括号【JavaScript讲解】

题目:

在这里插入图片描述
在这里插入图片描述

题解:

  • 本题是「邻项消除」问题,我们遇到这类问题的时候可以用 来解决它。
  • 邻项消除是一种在字符串处理或数据结构中,通过删除相邻且满足特定条件(如相等或特定关系)的元素来简化或转换数据的操作‌。
    这里我们来举例说明,例如s = “([])”
  • 我们创建一个空栈stk来存储左括号
  • 从左到右开始遍历
  • s[0] = ( ,这是一个左括号,左括号的我们都入栈处理
  • s[1] = [ ,同理入栈
  • s[2] = ] ,这是一个右括号,当我们遇到右括号的时候,就和栈顶的左括号做匹配,如果是匹配成功,那么就组成一队并弹出栈顶,否则括号类型不匹配。这里我们发现此处的 ] 和栈顶的 [ 相匹配,弹出栈顶。
  • s[3] = ) ,这是一个右括号,同理和栈顶做匹配,发现与栈顶的 ( 匹配成功,弹出栈顶继续向右遍历。
  • 直到遍历结束,s的长度为0 且 栈为null。

代码:

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    if(s.length % 2 !== 0){
        return false;
    }
    let stk = [];
    let mp ={'(':')','[':']','{':'}'};
    for(let ch of s){
        if(mp.hasOwnProperty(ch)){
            stk.push(ch);
        }else{
            if(stk.length === 0){
                return false;
            }
            let top = stk.pop();
            if(mp[top] !== ch){
                return false;
            }
        }
    }
    return stk.length === 0
};

通过:

在这里插入图片描述


http://www.kler.cn/a/504625.html

相关文章:

  • Git的基本命令以及其原理(公司小白学习)
  • 【数字化】华为-用变革的方法确保规划落地
  • ANSYS Fluent学习笔记(七)求解器四部分
  • golang运维开发-gopsutil(1)
  • Redis是单线程还是多线程?
  • 欧拉路径算法
  • 常见好用的PHP CMS开源系统有哪些?
  • javaEE-网络原理-IP协议
  • 微信小程序实现个人中心页面
  • Ubuntu磁盘空间不足或配置错误时,如何操作扩容?
  • Starrocks 存算分离 VS Trino 性能测试
  • 银河麒麟V10安装第二个nginx服务
  • Unity 自定义批量打包工具
  • TCP、UDP的区别及使用场景
  • 装备制造业:建立项目“四算”管理:以合同为源头,以项目为手段实现合同的测算、预算、核算与决算的管控体系
  • [云讷科技] 用于软件验证的仿真环境
  • flow-matching based TTS : VoiceBox, E2-TTS, maskGCT
  • 数据结构与算法之栈: LeetCode 1047. 删除字符串中的所有相邻重复项 (Ts版)
  • JVM 核心知识点总结
  • springboot使用阿里oss实现文件上传
  • 如何优化Elasticsearch大文档查询?
  • haproxy+httpd网站架构,实现负载均衡实验笔记
  • 【centos】校时服务创建
  • C 语言标准库函数——strtol函数
  • C#轻松实现ModbusTCP服务器接口
  • 高性能、低成本立体声音频模数转换器—— GC1808,支持掉电和时钟检测低功耗模式