题解 | #最长的括号子串#

最长的括号子串

http://www.nowcoder.com/practice/45fd68024a4c4e97a8d6c45fc61dc6ad

括号序列问题 https://leetcode-cn.com/problems/longest-valid-parentheses/solution/gua-hao-xu-lie-wen-ti-xiang-jie-han-xian-h7rn/

定义 start 为上一段不合法括号序列的最后一个右括号的位置,初始值为 -1

遍历字符串

  1. 如果是左括号,将其下标压入栈

  2. 如果是右括号

1)当前栈不为空,说明有可以匹配的左括号,则弹出左括号

a)如果栈还不为空,则用栈顶的下一个位置更新长度 `i - stk.top()`
b)否则栈为空,则从 [start + 1, i] 位置是一个合法括号序列,更新长度 `i - start`

2)当前栈为空,说明当前位置 i 是第一次出现的右括号不是合法序列,所以更新 start = i

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务