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;      

    }

};

 

你可能感兴趣的:(LeetCode)