32. 最长有效括号
解法一:dp
class Solution:
def longestValidParentheses(self, s: str) -> int:
n = len(s)
if n == 0:
return 0
dp = [0] * n
for i in range(1, n):
if s[i] == ')':
if s[i-1] == '(':
dp[i] = (dp[i-2] if i-2 >= 0 else 0) + 2 #注意下标
else: #i-1为右括号
if i-dp[i-1]-1 >= 0 and s[i-dp[i-1]-1] == '(':
dp[i] = dp[i-1] + (dp[i-dp[i-1]-2] if i-dp[i-1]-2 >=0 else 0) + 2
return max(dp)解法二:栈
最后更新于