有效的括号(Python)
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
解题思路
将字符串从前向后(从后向前也可)依次取出,若取出的字符与栈顶元素可以组成有效的括号,则弹出栈顶元素,否则将该字符压入栈顶。字符全部取出后若栈为空,则字符串有效,反之无效。
代码实现
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
letters = list(s)
bracketStack = []
while letters:
bracket = letters.pop() # 从后向前取出字符
if not bracketStack: # 栈为空时压入栈
bracketStack.append(bracket)
elif bracket + bracketStack[-1] in ['()', '[]', '{}']: # 与栈顶元素组成有效括号时,弹出栈
bracketStack.pop()
else: # 与栈顶元素组成有效括号时,压入栈
bracketStack.append(bracket)
if bracketStack:
return False
else:
return True