[算法]最大连续子数组和,最长重复子串

Posted darrenchan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法]最大连续子数组和,最长重复子串相关的知识,希望对你有一定的参考价值。

这两道题是我在面试中亲身经历的,在面试滴滴的过程中,我遇到过最大子数组和,在面试阿里的过程中,我遇到过最长重复子串。

1. 最大子数组和

比如,给定一个数组,

1, -2, 3, -4, 5, 6, -7

应该输出,

11。

public static int maxSubArray(int[] arr) {
        int max = Integer.MIN_VALUE;
        int k = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            if(k > 0){
                k += arr[i];
            }else{
                k = arr[i];
            }

            if(max < k){
                max = k;
            }
        }
        return max;
    }

2. 最长重复子串

比如,给定一个字符串,

"hello, my name is chenchi. is chenchi."

应该输出,

" is chenchi.",注:空格也要算。

public static String maxRepat(String input) {
        if(input == null || input.length() == 0){
            return null;
        }
        int max = Integer.MIN_VALUE;
        int k = Integer.MIN_VALUE;
        int first = 0;
        for (int i = 1; i < input.length(); i++) {
            for (int j = 0; j < input.length() - i; j++) {
                if(input.charAt(j) == input.charAt(i + j)){
                    k++;
                }else{
                    k = 0;
                }

                if(k > max){
                    max = k;
                    first = j - k + 1;
                }
            }
        }

        return input.substring(first, first + max);
    }

 

以上是关于[算法]最大连续子数组和,最长重复子串的主要内容,如果未能解决你的问题,请参考以下文章

算法 ---- 子序列系列问题题解(子序列编辑距离回文系列问题)

算法 ---- 子序列系列问题题解(子序列编辑距离回文系列问题)

Leetcode53.最大子串和(简单)76.最小子串覆盖(困难)3. 最长子串不重复问题(中等)

Leetcode53.最大子串和(简单)76.最小子串覆盖(困难)3. 最长子串不重复问题(中等)

Leetcode53.最大子串和(简单)76.最小子串覆盖(困难)3. 最长子串不重复问题(中等)

Leetcode53.最大子串和(简单)76.最小子串覆盖(困难)3. 最长子串不重复问题(中等)