20.有效的括号(python)

【题目】
20.有效的括号(python)

示例1
输入: “()”
输出: true
_
示例2
输入: “()[]{}”
输出: true
_
示例3
输入: “(]”
输出: false
_
示例4
输入: “([)]”
输出: false
_
示例5
输入: “{[]}”
输出: true

【思路】
发现这道题有“后进先出”的规律,所以使用栈stack的数据结构。
例如:([{}]) . 后进了’{’,则先出‘}’,再到‘]’,再到‘)’。

栈的知识点:
可以把栈想象成一列垂直堆放的书。为了拿到中间的书,你需要移除放置在这上面的所有书。这就是LIFO(后进先出)的工作原理。

下图是包含三个数据元素(1,2和3)的栈,其中顶部的3将被最先移除:
20.有效的括号(python)
撤销操作就是采用了栈的思想实现的。

栈的基本操作
Push——在顶部插入一个元素
Pop——返回并移除栈顶元素
isEmpty——如果栈为空,则返回true
Top——返回顶部元素,但并不移除它

【代码】

class Solution(object):
    def isValid(self, s) :
        """
        :type s: str
        :rtype: bool
        """
        d = {')': '(', '}': '{', ']': '['}
        stack = []
        for char in s:
            if char in '({[':
                stack.append(char)
            elif char in ')}]':
                if not stack:
                    return False
                else:
                    if stack.pop() != d[char]:
                        return False
        if stack: #如果stack里面还有内容输出False
            return False
        else:
            return True

【结果】

#测试:
s = '(()'
print(Solution().isValid(s))

#输出结果:
False

20.有效的括号(python)