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; } };