1 题目
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
2 解析
利用栈来实现,遇到左括号进栈,遇到右括号,就弹出栈顶,并对比括号类型是否相同。如果相同就继续遍历,直到遍历完,栈为空则返回True。如果不同,返回False。
注意:由于栈为空,有边界条件为报错,所以栈里存放一个无用字符,防止边界条件。则最后的边界条件是栈的长度为1。
3 python 实现
class Solution:
def isValid(self, s: str) -> bool:
d = {
'(':')','{':'}','[':']','-':'-'}
stack = ['-']
for c in s:
if c in d.keys():
stack.append(c)
elif d[stack.pop()]!=c:
return False
return len(stack)==1