目录
题目
解法一
int max(int a, int b) {
return a > b ? a : b;
}
int longestValidParentheses(char* s) {
const int len = strlen(s);
if (!len) {
return 0;
}
int dp[len];
memset(dp, 0, sizeof(dp));
int maxLen = 0;
for (int i = 1; i < len; i++) {
if (s[i] == ')') {
int preIndex = i - 1 - dp[i - 1];
if (preIndex >= 0 && s[preIndex] == '(') {
dp[i] = dp[i - 1] + 2 +
(preIndex - 1 >= 0 ? dp[preIndex - 1] : 0);
maxLen = max(maxLen, dp[i]);
}
}
}
return maxLen;
}