给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。
思路:
利用一个列表模拟堆栈进行匹配,遍历字符串,遇见左括号就进行入栈操作,遇见一次右括号就进行一次出栈,并进行一次比较。例如栈内的符号是:({,下一个遍历的字符是},见到右括号则进行一次出栈操作,进行一次比较,比较的是{和}两个符号,是匹配的,则接着遍历下一个位置。利用字典的键值对特性进行比较
代码如下:
class Solution: def isValid(self, s): if len(s) % 2 == 1:#偶数个符号才是一定匹配的 return False d = {'{': '}', '[': ']', '(': ')'} stack = [] for i in s: # in stack if i in d: stack.append(i) else: if not stack or d[stack.pop()] != i: return False return stack ==[]