https://leetcode.cn/problems/valid-parentheses/
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()”
输出:true
class Solution:
def isValid(self, s: str) -> bool:
# 星级:☆☆
# 标签:栈
# 思路:本题共涉及3种无效字符串情况,分别是左括号多、有括号多、不对称
stack = []
for item in s:
if item == '(':
stack.append(')')
elif item == '[':
stack.append(']')
elif item == '{':
stack.append('}')
elif not stack: # 右括号多:还没遍历结束,栈空了
return False
elif item != stack[-1]: # 不对称:遍历过程出现不相等
return False
else:
stack.pop()
# 左括号多:遍历结束,栈还有值
if stack:
return False
else:
return True