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;
};
相关推荐
地平线开发者4 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮5 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者5 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考5 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx8 小时前
CART决策树基本原理
算法·机器学习
Wect9 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱10 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway16 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风16 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect16 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript