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 {//medium public: int longestValidParentheses(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function stack<int> left;//position of '(' for(int ii = 0; ii < s.size(); ++ii){ if (s[ii] == '(') left.push(ii); else if (!left.empty()){//')' s[ii] = 'k'; s[left.top()] = 'k'; left.pop(); } } int maxLength = 0; int length = 0; for(int ii = 0; ii < s.size(); ++ii){ if (s[ii]=='k'){ ++length; if (maxLength < length) maxLength = length; } else length = 0; } return maxLength; } };
No comments:
Post a Comment