首页 > 代码库 > Longest Valid Parentheses

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){        stack<int> lefts; // index of left parentheses.        int len = s.length();        if(len < 2) return 0;        int start = -1;        int res = 0;        for (int i=0;i<len;i++){            if(s[i] == (){                lefts.push(i);            }else{                if(lefts.empty()){                    start = i;                }else{                    lefts.pop();                    if(lefts.empty()){                        res = max(res,i - start);                    }else{                        res = max(res,i- lefts.top());                    }                }            }        }        return res;    }};

 

Longest Valid Parentheses