Valid Parentheses
2016-07-21 21:29
190 查看
leetcode第20题,括号匹配,典型栈问题,不过这个题难度比传统括号匹配难度稍高,因为有多个括号匹配,而且这些括号不能相互进行穿插,因此需要我们先用字典来储存对应的括号结构,在栈的编码上,也要考虑更多的情况。总的思路是,遇到前括号,就压入栈,遇到后括号,先查看栈中是否有内容,如果没有直接返回False,如果有进一步查看是否能够匹配最近的相同类型的括号,如果匹配成功就弹出一个栈元素,如果不能匹配则直接失败。所有匹配结束后,继续查看栈中是否还有元素,如果还有这说明仍有前括号没有被匹配,则判定失败。
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
d = {'(':')','{':'}','[':']'}
stack = []
n = len(s)
for i in range(n):
if s[i] == '(' or s[i] == '[' or s[i] == '{':
stack.append(s[i])
if s[i] == ')' or s[i] == ']' or s[i] == '}':
if len(stack) == 0:
return False
elif d[stack[-1]] == s[i]:
del stack[-1]
else:
return False
if len(stack) == 0:
return True
else:
return False
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
d = {'(':')','{':'}','[':']'}
stack = []
n = len(s)
for i in range(n):
if s[i] == '(' or s[i] == '[' or s[i] == '{':
stack.append(s[i])
if s[i] == ')' or s[i] == ']' or s[i] == '}':
if len(stack) == 0:
return False
elif d[stack[-1]] == s[i]:
del stack[-1]
else:
return False
if len(stack) == 0:
return True
else:
return False
相关文章推荐
- 水仙花数——java
- 【 CodeForces 612A 】 The Text Splitting
- 自定义View之利用组合View实现复用
- String、String.valueOf、toString 它们三者的区别总结
- java----单例模式
- mysql1主多从配置
- CodeForces599BSpongebob and Joke
- Maximum Depth of Binary Tree
- Libgdx之Pixmap
- windows 堆管理
- js原生rotate函数
- java学习之路之基本语法-变量-练习题
- PAT-B 1013. 数素数
- bzoj1499(这道题改天重做,dp+单调队列优化)
- Spark总结(一)
- 源码分析-java-LinkedList
- LinkedHashMap
- 在microSD卡上扩展文件系统分区方法
- Android性能优化:谈谈Bitmap的内存管理与优化
- mysql中字符串运算