题目描述:Longest Valid Parentheses
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) { int max_len = 0, last = -1; //last是上一次的')'的位置 stack<int> lefts; for(int i = 0; i < s.size(); i++){ //s[i]为'(',则将i入栈 if(s[i] == '(') lefts.push(i); //s[i]为')' else{ if(lefts.empty()) last = i; else{ lefts.pop(); //若栈为空,则 if(lefts.empty()) max_len = max(max_len, i - last); else max_len = max(max_len, i - lefts.top()); } } } return max_len; } };