刚看此题觉得比较简单,利用栈来记录,但是其中的的细节很多,需要对")"以及栈是否为空进行考虑
代码
class Solution {
public:
int longestValidParentheses(string s) {
int lgest = 0;
int len = s.length();
int start = 0;
if(len==0)
return lgest;
stack<int> pare;
for(int i = 0; i < len; ++i)
{
if(s[i]=='(')
pare.push(i);
else
{
if(pare.empty())
{
start = i + 1;
}
else
{
pare.pop();
lgest = pare.empty()? max(lgest, i - start + 1):max(lgest, i - pare.top());
}
}
}
return lgest;
}
};