力扣刷题:有效的括号

题目:

给定一个只包括 '(',')','{','}','[',']' 的字符串 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
};
相关推荐
Aaron158818 分钟前
AD9084和Versal RF系列具体应用案例对比分析
嵌入式硬件·算法·fpga开发·硬件架构·硬件工程·信号处理·基带工程
laocooon52385788618 分钟前
插入法排序 python
开发语言·python·算法
wuhen_n1 小时前
LeetCode -- 1:两数之和(简单)
javascript·算法·leetcode·职场和发展
林shir2 小时前
Java基础1.7-数组
java·算法
Jeremy爱编码3 小时前
leetcode课程表
算法·leetcode·职场和发展
甄心爱学习3 小时前
SVD求解最小二乘(手写推导)
线性代数·算法·svd
努力学算法的蒟蒻3 小时前
day46(12.27)——leetcode面试经典150
算法·leetcode·面试
Blockbuater_drug3 小时前
InChIKey: 分子的“化学身份证”,从哈希原理到全球监管合规(2025)
算法·哈希算法·inchikey·rdkit·分子表达·化学信息学
橙汁味的风3 小时前
2EM算法详解
人工智能·算法·机器学习
维构lbs智能定位4 小时前
北斗卫星导航定位从核心框架到定位流程详解(一)
算法·北斗卫星导航定位系统