【发布时间】:2016-09-04 17:32:18
【问题描述】:
我想实现一个算法,可以发现字符串中括号使用的错误
我阅读了几个例子,并产生了为括号创建特殊类的想法,该类具有匹配左括号和右括号的功能
class Bracket:
def __init__(self, bracket_type, position):
self.bracket_type = bracket_type
self.position = position
def Match(self, c):
if self.bracket_type == '[' and c == ']':
return True
if self.bracket_type == '{' and c == '}':
return True
if self.bracket_type == '(' and c == ')':
return True
return False
接下来,我正在使用堆栈,无论 sting 是否平衡。我创建了一个循环,遍历每个符号,如果符号是一个括号,我想将它分配给我的特殊类,以便匹配以进一步关闭。
if __name__ == "__main__":
text = sys.stdin.read()
opening_brackets_stack = []
Balanced = True
bracket = Bracket
for i, symbol in enumerate(text):
if symbol in ['(', '[', '{']:
bracket.bracket_type = symbol
opening_brackets_stack.append(symbol)
elif bracket.Match(bracket.bracket_type, symbol) == True:
opening_brackets_stack.pop(symbol)
elif len(opening_brackets_stack) == 0:
True
但是,不幸的是,这不起作用。
AttributeError: 'str' object has no attribute 'bracket_type'
为什么会这样? 关于算法的结构你能说什么 - 对吗?
【问题讨论】: