栈与队列——1.有效的括号

力扣题目链接

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

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 注意空字符串可被认为是有效字符串。

示例:

python 复制代码
输入:"()[]{}"
输出:true

输入:"([)]"
输出:false

题干很简单,因此我们直接分析代码,完整代码如下:

python 复制代码
class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        
        for item in s:
            if item == '(':
                stack.append(')')
            elif item == '[':
                stack.append(']')
            elif item == '{':
                stack.append('}')
            elif not stack or stack[-1] != item:
                return False
            else:
                stack.pop()
        
        return True if not stack else False

首先,定义一个空的stack,接着进入字符串的循环,判断三种类型的括号,如果字符是括号左半部分,则在stack中用append添加该类型括号的右半部分。

你可以这样理解,从左开始最外层的括号对应的右半部分也是该组合括号的最外层,最内层的括号对应的右半部分也是该组合括号的最内层,这样才能构成有效的括号组。所以当遇到括号左半部分,类似(时,就在stack中添加),这样遇到括号右半部分按顺序出栈的时候才能完全抵消。

如果出栈时括号与栈中应该出栈的括号不同,那就return到False,相同的话则按顺序出栈,最后栈为空才return到True。

相关推荐
alphaTao5 分钟前
LeetCode 每日一题 2026/5/18-2026/5/24
python·leetcode
徐安安_ye16 分钟前
FlashAttention学习路线:从调API到写算子,你该走哪条路
python·学习
IT策士25 分钟前
Django 从 0 到 1 打造完整电商平台:商品搜索
后端·python·django
汉克老师26 分钟前
GESP6级C++考试语法知识(二十七、广度优先搜索(二、二维BFS))
c++·算法·图论·宽度优先·广度优先搜索·gesp6级·gesp六级
此生决int26 分钟前
算法从入门到精通——位运算
数据结构·c++·算法·蓝桥杯
春栀怡铃声27 分钟前
【C++修仙录02】筑基篇:vector 使用
开发语言·c++·算法
茉莉玫瑰花茶28 分钟前
LangGraph 持久化(Persistence)[ 2 ]
开发语言·python·ai·langgraph
Loli_Wolf31 分钟前
AI 原生研发闭环:从提需到线上监测,再自动回到提需
人工智能·深度学习·算法·microsoft·ai·ai编程·harness
有味道的男人33 分钟前
AI 对接 1688 图搜接口|Open Claw 以图搜货实战
开发语言·python
计算机安禾35 分钟前
【算法分析与设计】第4篇:分治策略的理论框架与经典案例
数据结构·算法·排序算法