题目描述:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
示例:
输入:s = “()[]{}”
输出:true
题解:最开始卡住的点是不知道如何用程序区分对应的是左括号还是右括号, 和怎么判断左右是否对应,其实对应的解法就是硬列举出来,用栈的解法遍历遇到左括号进栈,遍历遇到右括号出栈,然后判断两者是否为对应的左右括号:
class Solution:
def isValid(self, s: str) -> bool:
if len(s) == 0:
return True
stack = []
for i in s:
if i == "(" or i =="[" or i =="{":
stack.append(i)
else:
if len(stack) == 0:
return False
elif i == ")":
tmp = stack.pop()
if tmp != "(":
return False
elif i == "]":
tmp = stack.pop()
if tmp != "[":
return False
elif i == "}":
tmp = stack.pop()
if tmp !="{":
return False
if len(stack) == 0:
return True
else:
return False