检查平衡括号
括号被认为是以下字符中的任何一个:(
,)
,{
,}
,[
或 ]
。
如果开口括号(即 (
,[
或 {
)出现在完全相同类型的右括号(即 )
,]
或 }
)的左侧,则两个括号被认为是匹配对。有三种类型的匹配对括号:[]
,{}
和 ()
。
如果它所包含的括号组不匹配,则匹配的一对括号不平衡。例如,{[(])}
不平衡,因为 {
和 }
之间的内容不平衡。这对方括号包围一个不平衡的开口支架 (
,这对括号包围一个不平衡的闭合方括号 ]
。
通过这个逻辑,我们说如果满足以下条件,则认为括号序列是平衡的:
它不包含任何不匹配的括号。
括在括号内的括号子集也是一对匹配的括号。
算法:
- 声明一个堆栈(比如
stack
)。 - 现在遍历字符串输入。
- a)如果当前字符是起始括号(即
(
或{
或[
),则将其推入堆栈。 - b)如果当前字符是结束括号(即
)
或}
或]
),则从堆栈弹出。如果弹出的字符是匹配的起始括号,那么其他的括号是not balanced
。 - c)如果当前字符是右括号(即
)
或}
或]
)并且堆栈为空,则括号为not balanced
。
- 完成遍历后,如果堆栈中还有一些起始括号,则字符串为
not balanced
否则我们有一个balanced
字符串。