在Python中使用堆栈进行平衡符号检查
我一直在尝试使用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 "([{":
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,平衡的条件应该是顺序很重要。否则,解决方案就变得很简单,即计算{和}的数量。如果计数相等,则输入是平衡的。好的..谢谢你的帮助:)