解法:
看到这些判断左右对称的题,首先想到的就是用栈。
首先指定括号间的配对关系,例如 “()”,“[ ]”,“{ }”。用一个变量map_dict装着,让程序知道“)”和“(”,“]”和“[”是配对的。
然后把不在map_dict的key中的字符放如栈stack中,等待匹配。
若遍历到map_dict的key中的字符(右括号),则把栈顶字符出栈,判断出栈的这个字符是否是遍历到的右括号所对应的左括号。
是则继续循环,不是则直接返回False。
最后,要是有效的括号字符,栈最后一定为空,因为有多少个左括号,就有多少个右括号匹配。若非空,则返回False
class Solution(object):
def isValid(self, s):
stack = []
map_dict = {')':'(',']':'[','}':'{'}
for char in s:
if char in map_dict:
top_char = stack.pop()
if top_char != map_dict[char]:
return False
else:
stack.append(char)
return not stack
s = '(([]))'
ss = Solution()
print(ss.isValid(s)) #True