题解 | #最长的括号子串#
最长的括号子串
http://www.nowcoder.com/practice/45fd68024a4c4e97a8d6c45fc61dc6ad
栈
定义 start 为上一段不合法括号序列的最后一个右括号的位置,初始值为 -1
遍历字符串
-
如果是左括号,将其下标压入栈
-
如果是右括号
1)当前栈不为空,说明有可以匹配的左括号,则弹出左括号
a)如果栈还不为空,则用栈顶的下一个位置更新长度 `i - stk.top()`
b)否则栈为空,则从 [start + 1, i] 位置是一个合法括号序列,更新长度 `i - start`
2)当前栈为空,说明当前位置 i 是第一次出现的右括号不是合法序列,所以更新 start = i