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

相关推荐
2401_8288906428 分钟前
实现扩散模型 Stable Diffusion - MNIST 数据集
人工智能·python·深度学习·stable diffusion
jz_ddk41 分钟前
[指南] Python循环语句完全指南
开发语言·python·continue·循环·for·while·break
Evand J1 小时前
【Python代码例程】长短期记忆网络(LSTM)和无迹卡尔曼滤波(UKF)的结合,处理复杂非线性系统和时间序列数据
python·lstm·滤波
im_AMBER1 小时前
Leetcode 121 翻转二叉树 | 二叉树中的最大路径和
数据结构·学习·算法·leetcode
workflower2 小时前
易用性和人性化需求
java·python·测试用例·需求分析·big data·软件需求
嚯嚯歪2 小时前
攻克腾讯 TCaptcha 滑块验证码:纯 HTTP 协议逆向实战
爬虫·python·逆向·验证码识别
mit6.8242 小时前
二分+贪心
算法
じ☆冷颜〃2 小时前
随机微分层论:统一代数、拓扑与分析框架下的SPDE论述
笔记·python·学习·线性代数·拓扑学
programhelp_3 小时前
特斯拉 MLE 超详细面经 + 避坑
数据结构·人工智能·算法·面试·职场和发展
程序员敲代码吗3 小时前
提升Python编程效率的五大特性
开发语言·python