Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用堆栈进行平衡符号检查_Python_Stack - Fatal编程技术网

在Python中使用堆栈进行平衡符号检查

在Python中使用堆栈进行平衡符号检查,python,stack,Python,Stack,我一直在尝试使用python解决平衡符号问题 import Stack from Stack def parChecker(symbolString): s = Stack() balanced = True index = 0 while index < len(symbolString) and balanced: symbol = symbolString[index] if symbol in "([{":

我一直在尝试使用python解决平衡符号问题

import Stack from Stack 
def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:
        symbol = symbolString[index]
        if symbol in "([{":
            s.push(symbol)
        else:
            if s.isEmpty():
                balanced = False
            else:
                top = s.pop()
                if not matches(top,symbol):
                   balanced = False
        index = index + 1
    if balanced and s.isEmpty():
        return True
    else:
        return False

def matches(open,close):
    opens = "([{"
    closers = ")]}"
    return opens.index(open) == closers.index(close)


print(parChecker('{{([][])}()}'))
print(parChecker('[{()]'))
print (parChecker('({[})]')     # --- THis is balanced but returns false
从堆栈导入堆栈
def包裹检查器(符号串):
s=堆栈()
平衡=正确
索引=0
当索引

但是,这将返回false到输入([{})。此输入似乎是平衡的,但返回的输出是false。

首先,最上面的import语句的语法看起来不正确。其次,从哪个包导入堆栈类

关于你的问题,我认为({[})]并不是真正平衡的

步骤1.推(到堆栈中)

步骤2.取下一个字符。它是否与堆栈顶部的项相反?否。将{推到堆栈。堆栈:({

步骤3.取下一个字符。它是否与堆栈顶部的项目相反?否。推[到堆栈。堆栈:({[

步骤4.取下一个字符。它是否与堆栈顶部的项相反?否。将}推到堆栈

步骤5.依此类推,直到堆栈为({[})]


相反,如果输入是({[]}),在第4步之后,堆栈应该是({since]从堆栈中弹出的(,在第6步之后,它将是空的。

首先,最上面的import语句的语法看起来不正确。其次,从哪个包导入堆栈类

关于你的问题,我认为({[})]并不是真正平衡的

步骤1.推(到堆栈中)

步骤2.取下一个字符。它是否与堆栈顶部的项相反?否。将{推到堆栈。堆栈:({

步骤3.取下一个字符。它是否与堆栈顶部的项目相反?否。推[到堆栈。堆栈:({[

步骤4.取下一个字符。它是否与堆栈顶部的项相反?否。将}推到堆栈

步骤5.依此类推,直到堆栈为({[})]


相反,如果输入是({[]}),在第4步之后,堆栈应该是({since]从堆栈中弹出的(,在第6步之后,它将是空的。

这个问题是否有一个条件,即括号的顺序必须正确?我已经创建了一个类堆栈,并定义了该类中的所有堆栈函数。我正在将它们导入到我的程序中。这个程序运行良好,只有第三个输入为false。但我认为可能是我们需要把括号的顺序放在正确的顺序中!@shryasrivastava,平衡的条件应该是顺序很重要。否则,解决方案就变得很简单,即计算{和}的数量。如果计数相等,则输入是平衡的。好的..谢谢你的帮助:)这个问题的条件是括号的顺序必须正确吗?我已经创建了一个类堆栈,并定义了该类中的所有堆栈函数。我正在将它们导入到我的程序中。这个程序运行良好,只有第三个输入是错误的。但我想我们可能需要将括号的顺序放入一个corre中ct order!@shryasrivastava,平衡的条件应该是顺序很重要。否则,解决方案就变得很简单,即计算{和}的数量。如果计数相等,则输入是平衡的。好的..谢谢你的帮助:)