美文网首页
最长有效括号

最长有效括号

作者: 二进制的二哈 | 来源:发表于2019-12-17 22:58 被阅读0次

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/longest-valid-parentheses

    给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。

    示例 1:

    输入: "(()"
    输出: 2
    解释: 最长有效括号子串为 "()"
    

    示例 2:

    输入: ")()())"
    输出: 4
    解释: 最长有效括号子串为 "()()"
    

    动态规划解法:

    class Solution {
        public int longestValidParentheses(String s) {
            if (s.length() <= 1)
                return 0;
            int ans = 0;
            int[] dp = new int[s.length()];
            for (int i = 1; i < dp.length; i++) {
                if (s.charAt(i) == ')'){
                    if (s.charAt(i-1) == '('){
                        dp[i] = i-2 > -1 ? dp[i - 2] + 2 : 2;
                    }else if (s.charAt(i - 1) == ')'){
                        int leftLen = dp[i - 1];
                        if (i - leftLen - 1 > -1 && s.charAt(i - leftLen - 1) == '(') {
                            if (i - leftLen - 1 == 0) {
                                dp[i] = dp[i - 1] + 2;
                            } else {
                                dp[i] = dp[i - leftLen - 2] + dp[i - 1] + 2;
                            }
                        }
                    }
                }
                ans = Math.max(ans,dp[i]);
            }
            return ans;
        }
    }
    

    相关文章

      网友评论

          本文标题:最长有效括号

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