最长的公共子字符串
给定 2 个字符串 str1 和 str2,我们必须找到它们之间最长公共子字符串的长度。
例子
输入:X =abcdxyz
,y =xyzabcd
输出:4
最长的公共子字符串是 abcd
,长度为 4。
输入:X =zxabcdezy
,y =yzabcdezx
输出:6
最长的公共子字符串是 abcdez
,长度为 6。
用 Java 实现
public int getLongestCommonSubstring(String str1,String str2){
int arr[][] = new int[str2.length()+1][str1.length()+1];
int max = Integer.MIN_VALUE;
for(int i=1;i<=str2.length();i++){
for(int j=1;j<=str1.length();j++){
if(str1.charAt(j-1) == str2.charAt(i-1)){
arr[i][j] = arr[i-1][j-1]+1;
if(arr[i][j]>max)
max = arr[i][j];
}
else
arr[i][j] = 0;
}
}
return max;
}
时间复杂性
O(m * n 个)