这个是一个括号匹配问题,可以说刷leetcode以来这是我一次有自己设计算法,可能不尽如人意,我主要是运用了一个字典,给每一个括号一一个整数值,方便接下来的计算过程。整个代码流程就是:
1,判断字符串长度是奇数还是偶数,如果奇数直接报错
2,如果遇到的是前置括号就将其存入一个list,知道遇到下一个后置括号
3,在遇到后置括号的时候先检查临时list是否有内容,如没有直接报错,如有就与临时list最后一个元素进行匹配,匹配成功就将临时list删除末尾元素,反复如此,如没有匹配成功报错
注;想法在于验证条件引入了临时list,成功匹配的条件一定有临时list为空
s = input() length = len(s) d = {'(':1, '[':2, '{':3, '}':4, ']':5, ')':6,} i = 0 b = [] i = 0 sign = 0 if length % 2 != 0: print(False) else: for i in range(length): if d[s[i]] < 4: b.append(s[i]) else: if len(b) == 0 and d[s[i]] > 3: print(False) sign = 1 break else: if d[s[i]] + d[b[-1]] == 7: b.pop() else: print(False) sign = 1 break sign = 0 if sign == 0 and len(b) == 0: print(True) else: print(False)