代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University.
- 解法1(T99% S95%): 标准栈求解,左括号一路压栈,右括号弹出匹配,当前指向
),必须满足栈顶弹出来的是(- 小trick:可以用字典把括号的对应存下来,可以避免很多相似结构代码;同时pop()本身放在if- else里也是很漂亮的代码
- 提前判断是否为奇数
- 最后如果所有字符都看完还没错也不一定就没问题,还要检查栈是不是空
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
if len(s) % 2 == 1:
return False
bracket_map = {
')': '(',
'}': '{',
']': '['
}
stack = []
for item in s:
if item not in bracket_map:
stack.append(item)
elif len(stack)==0 or stack.pop() != bracket_map[item]:
return False
return not
博客介绍了Leetcode题目的解法,使用标准栈求解括号匹配问题。左括号压栈,右括号弹出匹配,可用字典存储括号对应关系简化代码。提前判断字符长度是否为奇数,遍历完字符后还需检查栈是否为空。代码仓库在Github。
163

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



