int longestValidParentheses(char * s){
int *f = (int *)malloc(sizeof(int) * strlen(s));
memset(f, 0, sizeof(int) * strlen(s));
int i;
int res = 0;
for(i = 1; i<strlen(s); i++)
{
if(s[i] == ')')
{
if(i > 0 && s[i-1] == '(')
{
if (i>=2) f[i] = 2 + f[i-2];
else f[i] = 2;
}
else if(i > 0 && s[i-1] == ')')
{
if((i - f[i-1] - 1 >=0 ) && (s[i-f[i-1]-1] == '(') )
{
if (i - f[i-1] - 2 >= 0) f[i] = 2 + f[i-1] + f[i - f[i-1] - 2];
else f[i] = 2 + f[i-1];
}
}
}
res = res > f[i]? res:f[i];
}
return res;
}
#32. 最长有效括号
最新推荐文章于 2024-03-23 10:33:08 发布