如何返回堆栈中的最后一个元素

时间:2015-05-10 10:49:36

标签: python

我正在为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

任何其他有助于代码的建议也将非常感谢。我使用代码运行器,我只能使用一个堆栈,特别是一个函数(不是一个类)来解决这个实验问题

1 个答案:

答案 0 :(得分:4)

通常,有result = '' ... result = result + ... 操作获取顶部元素而不删除它。如果不支持join,则可以通过peek() ping顶部元素并peek()重新设置它来进行模拟。但是,您不需要在此处执行任何操作,因为您可以pop元素来比较它:

push

如果一切都匹配,你最后还需要pop