美文网首页
32. Longest Valid Parentheses

32. Longest Valid Parentheses

作者: HalcyonMoon | 来源:发表于2016-06-28 22:45 被阅读0次

    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.

    
    public class Solution {
        public int longestValidParentheses(String s) {
            int len = s.length();
            if(len == 0){
                return 0;
            }
            
            int f[] = new int[len];
            int ret = 0;
            for(int i=1; i<len; i++){
                if(s.charAt(i) == ')'){
                    if(i - f[i-1] - 1>=0 && s.charAt(i - f[i-1] - 1) == '('){
                        f[i] = f[i-1] + 2;
                        if(i - f[i] > 0){
                            f[i] += f[i-f[i]];
                        }
                        ret = Math.max(ret, f[i]);
                    }
                }
            }
            return ret;
        }
    }
    

    相关文章

      网友评论

          本文标题:32. Longest Valid Parentheses

          本文链接:https://www.haomeiwen.com/subject/higtjttx.html