[LeetCode]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) {
        // 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;
    }
};

  

posted @ 2013-11-28 13:41  七年之后  阅读(199)  评论(0编辑  收藏  举报