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