题解 | #有效括号序列#
有效括号序列
http://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
栈
遍历给定的括号序列
-
如果当前字符是左括号
( [ {
,直接入栈 -
否则就是右括号
-
如果当前栈为空或者栈顶和当前右括号的 ASCII 码之差的绝对值大于 2,说明不是一对括号,同时也不是有效的括号序列,所以直接返回 false。
(、) ASCII 码 差 1,[、] 和 {、} ASCII 码差 2,所以如果两个括号不是一对匹配的括号则 ASCII 码绝对值差必然 > 2,如 (]、{)、[} 等等
- 否则说明栈顶和当前元素是一对匹配的括号,所以将栈顶弹出,继续匹配
-
最后判断栈是否为空,如果为空返回 true,否则返回 false。