/*
* 两个字符串的最大子字符串
*/
public class maxSubString {
public static void main(String[] args){
String str1 = "abcdefgh";
String str2 = "dbcdefjjj";
System.out.println(findSubString(str1, str2));
}
public static String findSubString(String str1, String str2){
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
int len1 = arr1.length;
int len2 = arr2.length;
int[][] tmp = new int[len1][len2];
int maxLength = 0;
int endIndex=0;
for(int i = 0; i < len1; i++)
{
if(arr1[i] == arr2[0]) tmp[i][0] = 1;
else tmp[i][0] = 0;
}
for(int j = 0; j < len2; j++){
if(arr1[0] == arr2[j]) tmp[0][j] = 1;
else tmp[0][j] = 0;
}
for(int i = 1; i < len1; i++){
for(int j = 1; j < len2; j++){
if(arr1[i] == arr2[j]){
tmp[i][j] = tmp[i-1][j-1] +1;
if(tmp[i][j] > maxLength){
maxLength = tmp[i][j];
endIndex =j;
}
}
else
tmp[i][j] = 0;
}
}
String result = str2.substring(endIndex-maxLength+1, endIndex+1);
return result;
}
}
两个字符串的最大公共子字符串
最新推荐文章于 2021-02-15 15:19:07 发布