【发布时间】:2022-01-07 23:09:54
【问题描述】:
括号是:()、[] 和 {}。我是初学者,所以对这一切还很陌生。
print(check_parentheses("()"))
print(check_parentheses("(()())"))
print(not check_parentheses("(()))")) # Unbalanced
print(not check_parentheses("((())")) # Unbalanced
print(check_parentheses("({})")) #fick fel här
print(not check_parentheses("({)}")) # Bad nesting
print(check_parentheses("({} [()] ({}))"))
print(not check_parentheses("({} [() ({)})")) # Unbalanced and bad nesting
所有这些都应该打印 True。
到目前为止,我所做的只是编写一堆 if 语句,例如,如果字符是 == "(" 那么 number_of_left_parentheses += 1。
我确实意识到这是次优的,因为它迫使我为所有 6 个可能的括号编写一个 if-elif 语句,这使我的代码比它必须的要长。
谁能帮我用 Stacks 解决这个问题?
【问题讨论】:
-
当你看到一个打开的“括号”时,然后将它推入堆栈。当您看到关闭的“括号”时,弹出堆栈。如果弹出的元素不是相应的开始“括号”,则存在不匹配。当输入结束并且堆栈不为空时,存在不匹配。