我正在为python做我的实验室作业,我仍然坚持其中一个问题。任何帮助将不胜感激。
因此,任务是查找字符串是否具有平衡括号。这意味着每个结束括号应该是有序的。
平衡括号示例:
(<>){}
不平衡的括号示例:
())
(<)> (this one is mistmatched)
)(<>
我坚持的部分是;如何返回堆栈的最后一个元素进行比较?
def balanced_brackets(text):
s = Stack()
opening_bracket_list = ["(", "[", "{"]
closing_bracket_dict = {")":"(", "]" : "[", "}" : "{"}
text_list = list(text)
for element in text_list:
if element in opening_bracket_list:
s.push(element)
if element in closing_bracket_dict:
if (last element of the stack) == closing_bracket_dict[element]:
s.pop()
else:
return False
if s == []:
return True
如您所见,我将文本拆分为字符串并使用for循环。如果它是一个左括号,我将它推入堆栈,如果它是一个关闭元素,我检查堆栈的最后一个元素是否与字典中的值匹配。如果不是,则返回False
,如果是,则返回True
。
任何其他有助于代码的建议也将非常感谢。我使用代码运行器,我只能使用一个堆栈,特别是一个函数(不是一个类)来解决这个实验问题
答案 0 :(得分:4)
通常,有result = ''
...
result = result + ...
操作获取顶部元素而不删除它。如果不支持join
,则可以通过peek()
ping顶部元素并peek()
重新设置它来进行模拟。但是,您不需要在此处执行任何操作,因为您可以pop
元素来比较它:
push
如果一切都匹配,你最后还需要pop
。