在Python中使用堆栈的平衡括号

时间:2014-01-29 00:45:38

标签: python python-3.x

我键入一个程序,查看带括号的方程式是否平衡,就像左侧括号的数量相同。我需要用“(”,“)”,“[”,“]”,“{”,“}”来做。这就是我到目前为止所做的:

# [import statements]

from stack_array import Stack
# [constants]


def is_balanced(symbolstring):

    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolstring) and balanced:
        symbol = symbolstring[index]
        if symbol == "(" and "[" and"{" :
            s.push(symbol)
        else:
            if s.is_empty():
                balanced = False
            else:
                s.pop()

        index = index + 1

    if balanced and s.is_empty():
        return (True)
    else:
        return(False)

我需要看看是否可以得到类似print(is_balanced("([5x+(2/4(5))])")的等式 工作。

1 个答案:

答案 0 :(得分:1)

使用in来测试变量是否具有多个值之一。

if symbol in ['(', '[', '{']:

当您从堆栈中弹出一个项目时,您需要检查打开的符号是否与关闭符号匹配。

if s.is_empty():
    balanced = False
else:
    opener = s.pop()

    if opener == '(' and symbol != ')': balanced = False
    if opener == '[' and symbol != ']': balanced = False
    if opener == '{' and symbol != '}': balanced = False