Python 在检查括号是否平衡时,我得到的结果不正确(即,我知道输入字符串是平衡的,但输出是不平衡的)
我最近在学习数据结构和算法。我很难理解为什么在实现堆栈并使用它检查括号是否平衡时,我没有得到所需的输出(即输入字符串是平衡的,但我得到的字符串是不平衡的) 第一:Python 在检查括号是否平衡时,我得到的结果不正确(即,我知道输入字符串是平衡的,但输出是不平衡的),python,python-3.x,Python,Python 3.x,我最近在学习数据结构和算法。我很难理解为什么在实现堆栈并使用它检查括号是否平衡时,我没有得到所需的输出(即输入字符串是平衡的,但我得到的字符串是不平衡的) 第一: stack.isEmpty实际上始终为真。您需要调用方法:stack.isEmpty() 第二: elif char not in opening and closing: 和closing部分实际上也总是正确的,但在这种情况下,它是不相关的,因为此时您已经知道char不在closing中。您应该完全省略并关闭 第三: ... or
stack.isEmpty
实际上始终为真。您需要调用方法:stack.isEmpty()
第二:
elif char not in opening and closing:
和closing
部分实际上也总是正确的,但在这种情况下,它是不相关的,因为此时您已经知道char
不在closing
中。您应该完全省略并关闭
第三:
... or char != stack.pop():
char
永远不能等于stack.pop()
,因为此时您知道char
是一个结束括号,而stack
只包含开始括号。您需要一些逻辑来将每个结束括号与其开始对应项关联起来。大概是通过stack.isEmpty
您的意思是stack.isEmpty()
elif char not in opening and closing
不是你的意思either@leafcuddeelif
@khelwood所指的正确语法是:elif开头不char,结尾不char:
@khelwood谢谢你说出我的错误。全部的brainfart@fendall没问题。总是很乐意指出别人的错误。
elif char not in opening and closing:
... or char != stack.pop():