当输入字符串具有匹配括号时,我不明白此函数何时返回'True'?它在哪里返回'真'?
def balance_check(s):
if len(s)%2 !=0:
return False
opening = set('([{')
matches = set([('(',')'),('[',']'),('{','}')] )
stack =[]
for paren in s:
if paren in opening:
stack.append(paren)
else:
if len(stack) == 0:
return False
last_open = stack.pop()
if (last_open,paren) not in matches:
return False
return len(stack) == 0
res=balance_check('[]')
答案 0 :(得分:2)
在方法的最后一行,它检查堆栈大小是否为零。如果为0,则表示已处理所有字符且没有无效组合,因此返回true。如果size不为零,则意味着仍有一些括号与左括号匹配,方法返回false。
当堆栈的长度/大小为零时,len(stack)== 0变为true