题目描述
给出一个仅包含字符'('和')'的字符串,计算最长的格式正确的括号子串的长度。
对于字符串"(()"来说,最长的格式正确的子串是"()",长度为2.
再举一个例子:对于字符串")()())",来说,最长的格式正确的子串是"()()",长度为4.
示例1
输入
"(()"
输出
2
class Solution {
public:
/**
*
* @param s string字符串
* @return int整型
*/
int longestValidParentheses(string s) {
// write code here
if(s.size()<2) return 0;
vector<int> dp(s.length(), 0);
int pre = 0;
int res = 0;
for(int i=0;i<s.length();i++){
if(s[i]==')'){
pre = i-dp[i-1]-1;
if(pre>=0 && s[pre]=='('){
dp[i]=dp[i-1]+2+(pre>0?dp[pre-1]:0);
}
}
res = max(res,dp[i]);
}
return res;
}
};