LC 速查

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
← 上一题 分割等和子集不同路径 下一题 →