1. 程式人生 > >[算法]最大連續子數組和,最長重復子串

[算法]最大連續子數組和,最長重復子串

name public 個數 enc har 最長 連續 null static

這兩道題是我在面試中親身經歷的,在面試滴滴的過程中,我遇到過最大子數組和,在面試阿裏的過程中,我遇到過最長重復子串。

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

[算法]最大連續子數組和,最長重復子串