用栈,并改变匹配的括号在s中的位置的值为‘0’。最后统计连续0的个数即可。
代码:
class Solution {
public:
int longestValidParentheses(string s) {
stack<int> stk;
int result = 0;
int count = 0;
if(s == "")
return result;
for(int i = 0; i < s.length(); ++i)
{
if(!stk.empty() && s[stk.top()] == '(' && s[i] == ')')
{
s[stk.top()] = '0';
stk.pop();
s[i] = '0';
}
else
{
stk.push(i);
}
}
int i = 0;
while(i < s.length() && s[i] != '0')
i++;
for(; i < s.length(); ++i)
{
if(s[i] == '0')
count++;
else
{
result = max(result, count);
count = 0;
}
}
return max(result, count);
}
};