2016-12-18 96 views
1

我不明白何時這個函數將返回'真'當一個輸入字符串匹配括號?它在哪裏返回'真'?爲什麼這個python函數返回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

您可能能夠通過剛剛經歷[pythontutor(HTTP運行它回答你自己的問題:// pythontutor.com/visualize.html#) –

回答

2

在方法的最後一行,它檢查堆棧大小是否爲零。如果它是0,則表示所有字符已經被處理,並且沒有無效的組合,因此它返回true。如果大小不爲零,則表示一些括號仍然與左括號匹配,並且方法返回false。當長/堆棧的大小是

LEN(棧)== 0變成真正的零

+0

非常感謝。現在我看到它是如何工作的。 –