LeetCode20 有效的括号
每日几道leetcode刷刷题!
LC20
题目描述
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()[]{}”
输出:true
输入:s = “(]”
输出:false
输入:s = “([)]”
输出:false
代码
class Solution:
def isValid(self, s: str) -> bool:
#奇数肯定不符合
if len(s) % 2 == 1:
return False
pairs = {
")": "(",
"]": "[",
"}": "{",
} #key为右,value 为左
#如果先出现右边的括号时,return False
stack = list() #栈,先进后出
for ch in s: #遍历符号
if ch in pairs: #判断 ch 是否在 pairs 中
#如果stack没东西了或者没有相应的左括号匹配,因为必须是同类型的匹配
if not stack or stack[-1] != pairs[ch]:
return False
stack.pop()
else: #stack添加入左括号
stack.append(ch)
return not stack
(参考官解)
本文介绍了LeetCode第20题的解决方案,主要涉及字符串处理和栈的应用。通过遍历字符串,利用栈来检查括号的有效性,确保左括号与右括号正确配对。当遇到右括号时,检查栈顶是否存在对应的左括号,若不存在或栈为空则返回false,最后栈为空则返回true,表示括号有效。
&spm=1001.2101.3001.5002&articleId=124044865&d=1&t=3&u=686d450e84524bcaa54e58eae8436c8d)
910

被折叠的 条评论
为什么被折叠?



