动态规划
class Solution {
public int longestValidParentheses(String s) {
char[] arr = s.toCharArray();
int[] dp = new int[arr.length];
int ans = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] == '(') {
continue;
}
if (arr[i - 1] == '(') {
dp[i] = Math.max(dp[i], (i - 2 >= 0 ? dp[i - 2] : 0) + 2);
}
if (arr[i - 1] == ')' && i - dp[i - 1] > 0 && arr[i - dp[i - 1] - 1] == '(') {
dp[i] = Math.max(
dp[i],
(i - dp[i - 1] - 2 >= 0) ? dp[i - 1] + dp[i - dp[i - 1] - 2] + 2 : dp[i - 1] + 2
);
}
ans = Math.max(ans, dp[i]);
}
return ans;
}
}

585

被折叠的 条评论
为什么被折叠?



