给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
1 class Solution(object): 2 def isValid(self, s): 3 """ 4 :type s: str 5 :rtype: bool 6 """ 7 dic = {')':'(', ']':'[', '}':'{'} 8 stack = [] 9 for i in s: 10 if i in dic.values():#如果元素i为左括号,将其存入栈 11 stack.append(i) 12 elif i in dic.keys():#如果是右括号 13 if stack==[] or dic[i] != stack.pop():#右括号的情况,如果栈内此时无元素,说明顺序错误,如果该右括号对应的左括号与栈的最后一个元素不匹配,括号匹配错误 14 return Faslse 15 else: 16 return False 17 return stack == []#最终所有括号完全匹配时,栈是pop被取空的