【发布时间】:2019-01-19 16:50:14
【问题描述】:
我需要解析一些文本并确定哪些括号未闭合并返回将闭合它们的括号列表,例如
如果这是输入的字符串:
({([])
那么函数应该返回一个括号列表来关闭已经不匹配的集合:
['}', ')']
基本上关闭了不匹配的集合。
这是我目前的代码:
def evaluate(str):
stack = []
missing = []
pushChars, popChars = "({[", ")}]"
for c in str:
if c in popChars:
matching = pushChars[popChars.index(c)]
if not len(stack) or stack[len(stack) - 1] != matching:
missing.append(c)
else:
stack.pop()
continue
if c in pushChars:
stack.append(c)
return missing
【问题讨论】:
-
但是如果你有一个错误的括号序列,比如
'({[}'? -
我会说(对于正在使用的应用程序)它应该返回一个空列表
-
我在这种情况下添加了引发异常的解决方案。
标签: python python-3.x stack