您的位置:首页 > 编程语言 > Python开发

Leetcode20 python有效的括号

2019-02-26 10:22 387 查看

题意:给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。

方法:利用入栈(列表)出栈的方式,依次遍历字符串,每一次遍历,前一次入栈的字符会弹出,与前一次的字符比较,如果不同,则直接判断为false,如果相同,则继续遍历。如果最终字符串为空,则判为true,不为空则判为false。

if len(s) % 2 == 1 or len(s) == 0:     #如果字符串长度为奇数或者0则直接判断不匹配
return False

d = {'{': '}', '[': ']', '(': ')'}
stack = []
for i in s:                    #遍历字符串
# in stack
if i in d:                 #入栈操作
stack.append(i)
else:
if not stack or d[stack.pop()] != i:  #出栈与当前遍历值判断
return False
```
else:
if stack:
return False

return True
```
return stack ==[]#优化,以上四条语句可以用这条语句替代

优化方法

class Solution:
def isValid(self, s: str) -> bool:
if len(s) % 2 == 1 or len(s) == 0:   #如果字符串长度为奇数或者0则直接判断不匹配
return False
a = {')':'(', ']':'[', '}':'{'}
l = [None]  #此时列表长度为1
for i in s:
if i in a and a[i] == l[-1]:
l.pop()
else:
l.append(i)
return len(l)==1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: