leetcod20-有效的括号

leetcode 20

思路

利用栈来解答,因为有效的括号是成对出现的,所以每一个[都会对应着一个],每一个(都会对应着一个),每一个{都对应着}

所以当出现( { [ 这些符号时,我们把相对应的另一半push到栈中,如果出现的不是这些符号,那就是出现的另一半符号,此时我们需要出栈 ,判断pop出的符号和当前符号是否相等,如果相等说明成功匹配到另一半,如果不相等则说明匹配错误,例如符号'([)]'就是无效的,当匹配到)的时候,pop出来的元素是],不匹配,所以会直接return false,另外还有一种情况是 ,stack中的已经没有元素了,但是还有有括号的出现,那一定也是不符合的,比如这样的例子:)(,也是无效括号

最后字符串遍历完成,如果stack中仍然存在元素,说明左括号多了,比如:(((),仍然无效

解答

js 复制代码
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;
};
相关推荐
究极无敌暴龙战神X3 分钟前
机器学习相关
人工智能·算法·机器学习
于樱花森上飞舞4 分钟前
【多线程】CAS和哈希表
java·数据结构·java-ee
断剑zou天涯13 分钟前
【算法笔记】有序表——跳表
笔记·算法
编程之路,妙趣横生13 分钟前
数据结构(十二) 位图 & 布隆过滤器
数据结构
挖矿大亨17 分钟前
c++中的函数调用运算符重载
前端·c++·算法
wadesir19 分钟前
Rust语言BM算法实现(从零开始掌握Boyer-Moore字符串搜索算法)
算法·rust·.net
硅农深芯19 分钟前
深入解析 AECQ100 标准中的 Cpk:保障汽车电子元器件质量的关键指标
人工智能·算法·汽车·芯片·cpk
AI 菌21 分钟前
Qwen-Image:复杂文本渲染与精准图像编辑的图像生成基础模型
人工智能·算法·计算机视觉·大模型·千问
Cx330❀22 分钟前
《C++ 递归、搜索与回溯》第1题:汉诺塔问题
开发语言·c++·算法·面试·回归算法
爱学习的uu29 分钟前
大模型学习1——各类模型接入langchain,模型调用,记忆管理,工具调用
人工智能·python·深度学习·学习·算法·机器学习·langchain