檢查平衡括號
括號被認為是以下字元中的任何一個:(,),{,},[ 或 ]。
如果開口括號(即 (,[ 或 {)出現在完全相同型別的右括號(即 ),] 或 })的左側,則兩個括號被認為是匹配對。有三種型別的匹配對括號:[],{} 和 ()。
如果它所包含的括號組不匹配,則匹配的一對括號不平衡。例如,{[(])} 不平衡,因為 { 和 } 之間的內容不平衡。這對方括號包圍一個不平衡的開口支架 (,這對括號包圍一個不平衡的閉合方括號 ]。
通過這個邏輯,我們說如果滿足以下條件,則認為括號序列是平衡的:
它不包含任何不匹配的括號。
括在括號內的括號子集也是一對匹配的括號。
演算法:
- 宣告一個堆疊(比如
stack)。 - 現在遍歷字串輸入。
- a)如果當前字元是起始括號(即
(或{或[),則將其推入堆疊。 - b)如果當前字元是結束括號(即
)或}或]),則從堆疊彈出。如果彈出的字元是匹配的起始括號,那麼其他的括號是not balanced。 - c)如果當前字元是右括號(即
)或}或])並且堆疊為空,則括號為not balanced。
- 完成遍歷後,如果堆疊中還有一些起始括號,則字串為
not balanced否則我們有一個balanced字串。