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