- 有效的括号
class No_0020_isValid:
"""
题干:
https://leetcode.cn/problems/valid-parentheses/
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效
解析:
栈先入后出特点与括号排序特点一致,即若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,
遍历完所有括号后stack应该为空
"""
@staticmethod
def is_valid(s: str):
# 哈希表建立左右括号对应关系
dic = {'{': '}', '[': ']', '(': ')', '#': '#'}
stack = ['#'] # 解决栈为空时的边界pop()问题
for c in s:
if c in dic:
# 遇到左括号入栈
stack.append(c)
elif dic[stack.pop()] != c:
# 遇到右括号, 栈顶应该为与之对应的左括号, 否则返回False
return False
return len(stack) == 1 # 正常情况下栈内会留有一个'#'