[LeetCode] Longest Valid Parentheses

来源:互联网 发布:网络诈骗类型有哪些 编辑:程序博客网 时间:2024/06/04 19:28

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 ans = 0;    int longestValidParentheses(string s) {        bool *a = new bool[s.length()];        memset(a,false,s.length());        stack<int> st;        for(int i = 0;i < s.length();i ++){            if(s[i] == '(')                st.push(i);            else if(s[i] == ')' && !st.empty()){                a[i] = true;                a[st.top()] = true;                st.pop();            }        }        int cur_len = 0;        for(int i = 0;i < s.length();i ++){            if(a[i]) cur_len ++;            else cur_len = 0;            ans = max(ans,cur_len);        }        return ans;    }};

0 0