DP
- 重叠子问题:
求出每个")"对应的最长有效括号长度。即dp[i]中的最大值 - 最优子结构:
后面的dp[i]等于前面计算出的dp[i]加上新发现的 - 状态转移方程
(两式中最后一个")"为dp[i])-
"...()...":
dp[i] = dp[i-2] + 2 -
"...((...))...":
dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2]
dp[i-1] + 2为"((...))"中倒数第二个")"的组合加上该组
dp[i-dp[i-1]-2]代表中间有间断之前的组合
空间复杂度O(n):dp数组长度为string长度 -