码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-08-10 23:15:28      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:class   else   子串   col   color   int   []   substring   +=   

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

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

 

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

标签:class   else   子串   col   color   int   []   substring   +=   

原文地址:https://www.cnblogs.com/DarrenChan/p/9457158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!