[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;

    }

};

  

你可能感兴趣的:(LeetCode)