leetcode-32-最长有效括号

题目描述:

 

方法一:动态规划 O(n) O(n)

class Solution:
    def longestValidParentheses(self, s: str) -> int:
        n = len(s)
        if n==0:return 0
        dp = [0]*n
        for i in range(len(s)):
            # i-dp[i-1]-1是与当前)对称的位置
            if s[i]==')' and i-dp[i-1]-1>=0 and s[i-dp[i-1]-1]=='(':
               dp[i]=dp[i-1]+dp[i-dp[i-1]-2]+2
        return max(dp)   

方法二:栈O(n)O(1)

方法三:正逆向结合 O(n) O(1)

 

posted @ 2020-07-04 23:13  oldby  阅读(117)  评论(0编辑  收藏  举报