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;
};
相关推荐
BK贝壳4 小时前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
拓恒技术7 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨8 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫8 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
文丑颜不良啊9 小时前
LeetCode876~900题目解析
java·leetcode
罗西的思考9 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
淡海水10 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
下一站春风里11 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
DRobot12 小时前
【机械制图与CAD实战(二十五)】螺纹的表示方法
算法·机械制图
用户老李12 小时前
卡尔曼滤波自学教程 10:无迹卡尔曼滤波(UKF)
算法