Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring.
For "(()", the longest valid parentheses substring is "()", which has length = 2.
Another example is ")()())", where the longest valid parentheses substring is "()()", which has length = 4.
思考:无匹配的‘)’为断点。
class Solution {
public:
int longestValidParentheses(string s) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int ret=0,last=-1;
stack<int> left;
for(int i=0;i<s.size();i++)
{
if(s[i]=='(') left.push(i);
else //s[i]==')'
{
if(left.empty()) last=i;
else
{
left.pop();
if(left.empty()) ret=max(ret,i-last);
else ret=max(ret,i-left.top());
}
}
}
return ret;
}
};