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

leetcod20-有效的括号

leetcode 20
在这里插入图片描述

思路

利用栈来解答,因为有效的括号是成对出现的,所以每一个[都会对应着一个],每一个(都会对应着一个),每一个{都对应着}
所以当出现( { [ 这些符号时,我们把相对应的另一半push到栈中,如果出现的不是这些符号,那就是出现的另一半符号,此时我们需要出栈,判断pop出的符号和当前符号是否相等,如果相等说明成功匹配到另一半,如果不相等则说明匹配错误,例如符号'([)]'就是无效的,当匹配到)的时候,pop出来的元素是],不匹配,所以会直接return false,另外还有一种情况是,stack中的已经没有元素了,但是还有有括号的出现,那一定也是不符合的,比如这样的例子:)(,也是无效括号
最后字符串遍历完成,如果stack中仍然存在元素,说明左括号多了,比如:(((),仍然无效

解答

var isValid = function(s) {
    let stack = [];
    for(let i = 0;i < s.length;i++){
        if(s[i] === '('){
            stack.push(')')
        }else if(s[i] === '{'){
            stack.push('}')
        }else if(s[i] === '['){
            stack.push(']')
        }else if(!stack.length || s[i]!==stack.pop()){
            return false;
        }
    }
    return stack.length === 0;
};

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

相关文章:

  • 基于机器学习的医疗图像分析:从图像识别到精准诊断
  • 关于JavaScript中的事件
  • 设计模式-结构型-享元模式
  • 【Python pro】基本数据类型
  • CentOS/RHEL如何更换国内Yum源
  • 深度学习笔记之自然语言处理(NLP)
  • 推荐几款较好的开源成熟框架
  • vue中为什么在实现双向绑定时
  • BSD协议栈:UDP输入
  • LLM 架构
  • 零基础入门机器学习 -- 第十一章机器学习模型的评估与优化
  • 机器视觉检测中,2D面阵相机和线扫相机的区别
  • 使用html css js 开发一个 教育机构前端静态网站模板
  • java基础语知识(8)
  • DAY07 Collection、Iterator、泛型、数据结构
  • 异常处理、事务管理
  • C++中变量与容器的默认初始化:0的奥秘
  • 多线程之两阶段终止模式
  • App接入图表:MPAndroidChart,如何创建柱状图、双柱状图以及折线图
  • C学习, 排序算法