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

相关推荐
不忘不弃20 分钟前
从字符串中提取数字
数据结构·算法
囊中之锥.1 小时前
《机器学习SVM从零到精通:图解最优超平面与软间隔实战》
算法·机器学习·支持向量机
顽强卖力1 小时前
第二章:什么是数据分析师?
笔记·python·职场和发展·学习方法
必胜刻2 小时前
复原 IP 地址(回溯算法)
tcp/ip·算法·深度优先
站大爷IP2 小时前
Python实现Excel数据自动化处理:从繁琐操作到智能流程的蜕变
python
YGGP2 小时前
【Golang】LeetCode 5. 最长回文子串
算法·leetcode
BBB努力学习程序设计2 小时前
Python 进阶知识点精讲:上下文管理器(Context Manager)的原理与实战
python·pycharm
清水白石0082 小时前
《深入 super() 的世界:MRO 与 C3 线性化算法的全景解析与实战指南》
python
大厂技术总监下海2 小时前
Python 开发者的“新引擎”:Rust 编写的解释器,性能与安全兼得
python·开源
挖矿大亨2 小时前
C++中的赋值运算符重载
开发语言·c++·算法