leetcode---------有效的括号(栈)

解法:

看到这些判断左右对称的题,首先想到的就是用栈。

首先指定括号间的配对关系,例如 “()”,“[ ]”,“{ }”。用一个变量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
发布了278 篇原创文章 · 获赞 470 · 访问量 82万+

猜你喜欢

转载自blog.csdn.net/u014453898/article/details/105149287