题目
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例
输入:s = “(]”
输出:false
输入:s = “([)]”
输出:false
输入:s = “{[]}”
输出:true
解法
使用栈的方法判断
class Solution:
def isValid(self, s: str) -> bool:
dict={
'(':')',
'[':']',
'{':'}',
'?':'?'
}
stack=['?'] #加入其他符号是防止开头是右符号,pop会报错
for c in s:
if c in dict:
stack.append(c)
elif dict[stack.pop()]!=c:
return False
return len(stack)==1