HOT 100 › 索引 › B15 动态规划 Dynamic Programming
LC 32最长有效括号Longest Valid Parentheses 困难
求只由 '(' 和 ')' 组成的字符串中最长的连续且匹配的有效括号子串长度。
思路 栈存下标,栈底始终是最近无效位置:左括号入栈,右括号弹栈,弹空则当前下标成为新栈底,否则用 i - 栈顶更新答案。时间 O(n)。
class Solution: def longestValidParentheses(self, s: str) -> int: ans = 0 stack = [-1] for i, c in enumerate(s): if c == '(': stack.append(i) else: stack.pop() if not stack: stack.append(i) else: ans = max(ans, i - stack[-1]) return ans