📅  最后修改于: 2023-12-03 15:26:08.988000             🧑  作者: Mango
给定一个字符串,包括 "(",")","{","}","[","]" ,判断字符串是否有效。
有效字符串需满足:
注意空字符串可被认为是有效字符串。
这是一个典型的栈的应用场景。我们可以利用栈来存储左括号,每当遇到一个右括号,就去栈中查找它对应的左括号是否存在,如果存在,则将其弹出,否则判定为非法字符串。
具体的实现过程如下:
stack
,并初始化为空。stack
为空,则字符串合法,否则非法。实现代码如下:
def isValid(s: str) -> bool:
stack = []
pairs = {")": "(", "}": "{", "]": "["}
for char in s:
if char in pairs.values():
stack.append(char)
elif char in pairs.keys():
if len(stack) == 0 or stack[-1] != pairs[char]:
return False
stack.pop(-1)
return len(stack) == 0
代码解释:
stack
和一个字典 pairs
,字典中存储右括号和其对应的左括号。s
中的每个字符 char
。char
是左括号,将其压入栈 stack
中。char
是右括号,查看栈 stack
的栈顶元素是否是与之匹配的左括号,如果匹配,则将栈顶元素弹出。stack
为空,则字符串合法,否则非法。通过栈来实现字符串的合法性判断,可以很好地利用栈的后进先出特点,完成左右括号的匹配,从而实现高效的字符串判断。