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

相关推荐
不会就选b13 小时前
算法日常・每日刷题--<贪心>7
数据结构·算法·leetcode
moonrailgun13 小时前
用 Node.js 复刻 Codex Astra 的终端星光
前端·javascript·算法
罗西的思考14 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(1)--- 总体
人工智能·算法·机器学习
YCOSA202514 小时前
系统工具使用检测.exe (仅供娱乐)
python·microsoft
2601_9622953314 小时前
如何python实现网页的自动化
python·selenium·beautifulsoup·requests·网页自动化
ofoxcoding14 小时前
GPT Image 2.5 API 实战:Python 调用实现图片生成与编辑
人工智能·python·gpt·ai
lvwangshu14 小时前
图论:LCA、树的直径、树的重心、二分图与 Tarjan 缩点
算法·图论
张小姐的猫15 小时前
【AI大模型接入SDK】 —— Gemini接入封装
android·数据结构·数据库·c++·人工智能·python
Elastic 中国社区官方博客15 小时前
Elasticsearch Python DSL 客户端开发
大数据·数据库·python·elasticsearch·搜索引擎·全文检索
302wanger15 小时前
干与湿:AI 拿走脑力之后,人剩下什么
算法