LeetCode:有效的括号
2020-06-17
2 min read
题目
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意:空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses
题解
运用栈的概念,先入后出。后进的左括号最先删除,最后判断栈的长度和某些特殊情况(如只有一个右括号的情况)。
class Solution:
def isValid(self, s: str) -> bool:
if s=="":
return True
temp = []
for st in s:
if st == "(" or st=='{' or st=='[':
temp.append(st)
else:
if not temp: return False
if st==')' and temp[-1]=='(':
temp.pop(-1)
elif st=='}' and temp[-1]=='{':
temp.pop(-1)
elif st==']' and temp[-1]=='[':
temp.pop(-1)
else:
return False
if len(temp)==0:
return True
else:
return False