20.有效的括号(python)
【题目】
示例1
输入: “()”
输出: true
_
示例2
输入: “()[]{}”
输出: true
_
示例3
输入: “(]”
输出: false
_
示例4
输入: “([)]”
输出: false
_
示例5
输入: “{[]}”
输出: true
【思路】
发现这道题有“后进先出”的规律,所以使用栈stack的数据结构。
例如:([{}]) . 后进了’{’,则先出‘}’,再到‘]’,再到‘)’。
栈的知识点:
可以把栈想象成一列垂直堆放的书。为了拿到中间的书,你需要移除放置在这上面的所有书。这就是LIFO(后进先出)的工作原理。
下图是包含三个数据元素(1,2和3)的栈,其中顶部的3将被最先移除:
撤销操作就是采用了栈的思想实现的。
栈的基本操作
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