1. 题目:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
2. 我的代码:
class Solution: def isValid(self, s: str) -> bool: # 对照字典 dic = {'.': '?', '(': ')', '[': ']', '{': '}'} # 初始化栈 stack = ['.'] for c in s + '?': if c in dic: stack.append(c) else: c_last = stack.pop() if dic[c_last] != c: return False if stack == []: return True else: return False
当所有的字符都判断完后,剩余的为空,但是为了防止类似于’]'的报错情况,将栈底和栈顶加入自己设定的元素,来判断最后一刻是否空栈。这里使用的是 ‘.’: ‘?’ 两个元素