📅  最后修改于: 2023-12-03 15:12:14.870000             🧑  作者: Mango
给定一个字符串,其中包含以下四种符号:
(
:左括号)
:右括号{
:左花括号}
:右花括号请编写一个函数 isValid
来判断该字符串是否是有效的括号序列。
括号必须按照顺序闭合,例如 ()()
和 (())
是有效的括号序列,但 (()(
和 ())(
不是。
assert isValid("()") == True
assert isValid("()[]{}") == True
assert isValid("(]") == False
assert isValid("([)]") == False
assert isValid("{[]}") == True
这道题可以使用栈来解决。遍历字符串中的每个字符,如果是左括号,则将其压入栈中;如果是右括号,则弹出栈顶元素并判断是否匹配。如果不匹配或者栈为空,则返回 False。最后判断栈是否为空,如果为空,则说明所有括号都匹配成功,返回 True。
def isValid(s: str) -> bool:
stack = []
mapping = {")": "(", "}": "{", "]": "["}
for char in s:
if char in mapping:
top_element = stack.pop() if stack else "#"
if mapping[char] != top_element:
return False
else:
stack.append(char)
return not stack