給定一個只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判斷字符串是否有效。spa
有效字符串需知足:code
注意空字符串可被認爲是有效字符串。blog
拿到題目,第一件事情,就是先把問題分解,從題目描述中能夠看出要對三種類型的組合括號進行判斷,那咱們就先考慮一種括號的狀況。題目中提到的注意空字符,也能夠先不考慮。字符串
給定一個只包括 '('
,')'
的字符串,判斷字符串是否有效。it
有效字符串需知足:class
如今題目就變得更加簡單了,由於只有這一種類型的符號,咱們不用考慮括號類型是否正確。核心的問題就是如何判斷括號的順序是否正確。循環
那如何判斷括號的順序是否正確呢?im
括號只有左括號和右括號兩種,左括號在左邊,右括號在右邊即爲正確的順序,其餘的順序都是錯誤的。img
使用棧後進先出的特性,先把左括號推入棧中,等到遇到右括號的時候,把左括號從棧推出,和右括號進行比較,若是兩個括號匹配,那就證實這一對括號是正確的,接下來重複上述操做,直到沒有右括號,退出循環。退出循環後檢查棧中是否還有括號存在,若是棧爲空,則證實全部括號都配對完成,反之,則證實字符串不是有效的。co
解決了一個類型的括號後,遇到多個類型的括號,只要在判斷括號是否匹配的時候去檢測一下是不是配對括號便可。