package com.interview.dynamic;
/**
* http://www.geeksforgeeks.org/longest-even-length-substring-sum-first-second-half/
* Test cases
* Even length string
* odd length string
* 0 length string
*/
public class LongestEvenLengthSubstringOfEqualHalf {
public int findMaxLength(int input[]){
assert input != null;
int T[][] = new int[input.length][input.length];
for(int i=0; i < T.length; i++){
T[i][i] = input[i];
}
int max = 0;
for(int len = 2; len <= input.length; len++){
for(int i=0; i < input.length - len+1; i++){
int j = i + len-1;
//updating sum for each lenght
T[i][j] = T[i][j-1] + input[j];
if(len % 2 == 0){
int k = (i + j)/2;
if(T[i][k] == T[k+1][j]){
if(max < len){
max = len;
}
}
}
}
}
return max;
}
public static void main(String args[]){
int input[] = {1,5,3,8,0,2,14,9};
LongestEvenLengthSubstringOfEqualHalf lel = new LongestEvenLengthSubstringOfEqualHalf();
System.out.println(lel.findMaxLength(input));
}
}