力扣面试150(42/150)

7.28 20. 有效的括号

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

有效字符串需满足:

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

我的思路:

长度必须为偶数,不是返回false

数组当作栈,确保每一个右括号都对应一个左括号

如果mp没有c的话->左括号,直接push

如果st长度为0,或者栈顶不为对应的括号->返回false

我的代码:

复制代码
var isValid = function(s) {
    if(s.length % 2 === 1){
        return false;
    }
    const st = [];
    const mp = {')' : '(' , ']':'[' , '}' : '{'};
    for(let c of s){
        if(!mp.hasOwnProperty(c)){
            // c是左括号
            st.push(c);
        }else if(st.length === 0 || st.pop() !== mp[c]){
            return false;
        }
    }
    return st.length === 0;
};

总结:这个函数用栈和哈希表来检查括号字符串是否有效。先检查长度是否为奇数,如果是直接返回false。然后遍历字符串,遇到左括号就压栈,遇到右括号就检查栈顶是否匹配,不匹配或栈空就返回false。最后检查栈是否为空,空则有效。

相关推荐
Insight9 分钟前
拒绝手动 Copy!一文吃透 PyTorch/NumPy 中的广播机制 (Broadcasting)
算法
CoovallyAIHub30 分钟前
工业视觉检测:多模态大模型的诱惑
深度学习·算法·计算机视觉
Jayden_Ruan37 分钟前
C++分解质因数
数据结构·c++·算法
bubiyoushang8881 小时前
MATLAB实现雷达恒虚警检测
数据结构·算法·matlab
wu_asia1 小时前
编程技巧:如何高效输出特定倍数数列
c语言·数据结构·算法
AlenTech1 小时前
207. 课程表 - 力扣(LeetCode)
算法·leetcode·职场和发展
练习时长一年2 小时前
LeetCode热题100(杨辉三角)
算法·leetcode·职场和发展
lzllzz232 小时前
bellman_ford算法
算法
栈与堆2 小时前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
sunfove2 小时前
麦克斯韦方程组 (Maxwell‘s Equations) 的完整推导
线性代数·算法·矩阵