栈与队列——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。

相关推荐
开开心心就好5 分钟前
电脑小说阅读器,支持朗读和自定义皮肤
服务器·开发语言·javascript·算法·pdf·c#·音视频
大泽九章16 分钟前
XSS入门:存储型、反射型、DOM型,用Flask全复现
python·网络安全·flask
class心平气和18 分钟前
ADB 工具函数 Python 使用教程
开发语言·python·adb
小小张说故事34 分钟前
Python 里 is 和 == 到底差在哪?拆开小整数池、字符串驻留与 0ns 身份比较
python
滴啦嘟啦哒39 分钟前
【具身笔记】【Piper+PI0.5】三、探究失败原因
笔记·python·vla·具身
闻缺陷则喜何志丹40 分钟前
【c++20】协程与屏障
c++·算法·c++20·携程·屏障
erzong23141 分钟前
Linux操作系统:线程池&踩坑修复
linux·运维·算法
W_326001 小时前
Python 图像处理第二十八章|OpenCV 形态学操作进阶:腐蚀、膨胀、开运算、闭运算、梯度、顶帽黑帽
图像处理·人工智能·python·opencv·计算机视觉
alphaTao1 小时前
LeetCode 每日一题 2026/10/19-2026/10/25
算法·leetcode
BD_Marathon1 小时前
【Python】标准多态和鸭子多态
python