zoukankan      html  css  js  c++  java
  • 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.

    方法

    使用动态规划的思想,从后往前求解,遇到“(”,则进行条件推断。
        public int longestValidParentheses(String s) {
            if (s == null || s.length() == 0 || s.length() == 1) {
                return 0;
            }
            
            int len = s.length();
            int[] num = new int[len];
            num[len - 1] = 0;
            for (int i = len - 2; i >= 0; i--) {
                if (s.charAt(i) == '(') {
                    int j = i + 1 + num[i + 1];
                    if (j < len && s.charAt(j) == ')') {
                        num[i] = num[i + 1] + 2;
                        if (j + 1 < len) {
                            num[i] += num[j + 1];
                        }
                    }
    
                }
            }
            int max = 0;
            for (int i = 0; i < len; i++) {
                if (max < num[i]) {
                    max = num[i];
                }
            }
            return max;
        }


  • 相关阅读:
    P1012拼数
    P1622释放囚犯
    P1064 金明的预算方案
    P1754球迷购票问题
    卡塔兰数
    P1474货币系统
    P2562kitty猫基因
    P3984高兴的津津
    5-servlet简介
    java通过百度AI开发平台提取身份证图片中的文字信息
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6752134.html
Copyright © 2011-2022 走看看