用一个数组记录所有匹配的地方
然后在数组中寻找最长的匹配地方
class Solution {
public:
int longestValidParentheses(string s) {
stack<int> q;
int *a =(int *)malloc(s.size()*sizeof(int));
for(int i=0;i<s.size();i++)
{
a[i]=0;
}
for(int i=0;i<s.size();i++)
{
if(s[i]=='(')
q.push(i);
else
{
if(!q.empty())
{
a[i]=1;
a[q.top()]=1;
q.pop();
}
}
}
int max=0;
int temp=0;
for(int i=0;i<s.size();i++)
{
if(a[i]==1)
{
temp++;
}
else
{
max=temp>max?temp:max;
temp=0;
}
}
return max>temp?max:temp;
}
};