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;
        }


  • 相关阅读:
    PHP设计模式
    PHP 面向对象
    MYSQL 覆盖索引
    MYSQL IOPS、QPS、TPS
    MySQL 事务嵌套
    MySQL 慢查询优化
    MySQL 查询状态
    MySQL 乐观锁和悲观锁
    MySQL 分库、分表
    Spring Boot 全局异常捕捉,自定义异常并统一返回
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6752134.html
Copyright © 2011-2022 走看看