给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例:
输入:s = "()" 输出:true
Python解法:
参考了一下解法
利用栈和字典,先构筑一个key为右括号,value为左括号的字典。然后利用栈,遍历所有的输入字符串,如果遇到左括号就压入栈中,遇到右括号就弹出栈顶元素与其配对看是否是同类括号。
class Solution:
def isValid(self, s: str) -> bool:
if len(s)%2==1:
return False
stack = []
dic ={')':'(', ']':'[', '}':'{'}
i = 0
while i < len(s):
if s[i] in dic.values():
stack.append(s[i])
else:
if len(stack) == 0 or stack.pop() != dic[s[i]]:
return False
i+=1
return len(stack) == 0
结果: