package com.interview.algorithms.string;
/**
* Created_By: stefanie
* Date: 14-7-7
* Time: 下午10:18
*/
public class C11_12_LongestCommonSubstring {
public static String LCS(String str1, String str2){
int maxLength = 0;
int maxI = 0;
int M = str1.length() + 1;
int N = str2.length() + 1;
int[][] c = new int[M][N];
for(int i = 0; i < M; i++) c[i][0] = 0;
for(int i = 0; i < N; i++) c[0][i] = 0;
for(int i = 1; i < M; i++){
for(int j = 1; j < N; j++){
if(str1.charAt(i - 1) == str2.charAt(j - 1)) {
c[i][j] = c[i-1][j-1] + 1;
if(c[i][j] > maxLength){
maxLength = c[i][j];
maxI = i;
}
}
else c[i][j] = 0;
}
}
if(maxLength > 0) {
char[] chars = new char[maxLength];
for(int i = maxLength - 1; i >= 0; i--) chars[i] = str1.charAt(--maxI);
return String.copyValueOf(chars);
} else {
return "";
}
}
}