力扣刷题:有效的括号

题目:

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 每个右括号都有一个对应的相同类型的左括号。

示例1:

输入:s = "()"

输出:true

示例2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

示例 5:

输入:s = "([)]"

输出:false

解析:

这道题的本质是考察对的使用,我们要明白栈的性质:后进先出

我们首先将字符串遍历,遍历的同时,使用switch判断当前字符是否属于括号类型的左部分,是的话,就直接在栈中推入当前括号类型的右部分.

如果不是的话,就直接将当前字符与栈最上层的元素进行对比,不能形成正确闭合关系的话直接返回false

直到将字符串遍历完成后,最后判断栈的长度是否为0

具体代码:

javascript 复制代码
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    const stack = []
    for(let i = 0;i<s.length;i++){
        let c = s[i]
        switch(c){
            case '(':
                stack.push(')')
                break
            case '[':
                stack.push(']')
                break
            case '{':
                stack.push('}')
                break
            default:
                if(c !== stack.pop()){
                    return false
                }
        }
    }
    return stack.length === 0
};
相关推荐
徐小夕6 小时前
面试官:AI生成到90%突然断了,你的解决方案是什么?(万字长文深度剖析)
前端·vue.js·算法
EnCi Zheng6 小时前
09a-斯坦福 CS336 作业一:BPE分词器
开发语言·python·算法
生成论实验室6 小时前
用事件关系网络重新理解AI(二):损失函数、优化器与深度学习的动力学
数据结构·人工智能·深度学习·算法·语言模型
霍霍的袁6 小时前
【C++初阶】缺省参数(默认参数)详细讲解
开发语言·c++·算法
秦明月136 小时前
电气安全回路设计实战:皮尔兹安全继电器应用
经验分享·笔记·安全·职场和发展·创业创新·学习方法
计算机安禾7 小时前
【算法分析与设计】第2篇:计算模型与渐进复杂性分析
算法
生成论实验室7 小时前
事件、信息荷与六维态势空间——每一个事件都是一次空间的弯曲
人工智能·算法·语言模型·可信计算技术·安全架构
budingxiaomoli7 小时前
递归,搜索与回溯算法--递归
算法
风味蘑菇干7 小时前
Stream基础题目
java·算法
KaMeidebaby7 小时前
卡梅德生物技术快报|真核蛋白表达信号肽筛选实验全流程复盘
服务器·前端·数据库·人工智能·算法