leetcode[32]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 n=s.size();
    if(n==0||n==1)return 0;
    stack<int> stk;
    int len=0;
    for (int i=0;i<s.size();i++)
    {
        if(s[i]=='(')stk.push(i);
        else
        {
            if(!stk.empty()&&s[stk.top()]=='(')
            {
                stk.pop();
                int tenlen=stk.empty()?i+1:i-stk.top();
                len=tenlen>len?tenlen:len;
            }
            else
                stk.push(i);
        }
    }
    return len;      
    }
};

 

posted @ 2015-02-10 13:14  Vae永Silence  阅读(102)  评论(0编辑  收藏  举报