对于前面的一篇关于LCS的算法,在实际网页内容的比对中由于构建的矩阵过大,而使内存消耗过多,下面这个算法和LCS算法有很多相似之处,可以说是弱化了的LCS算法。这个算法强调的是找到最长公共子串的长度,和其中的一个子串。下面是java实现
public int getSameStr2(String str1,String str2){
int str1Lenth = str1.length();
int str2Lenth = str2.length();
char[] arrchar1 = str1.toCharArray();
char[] arrchar2 = str2.toCharArray();
String str3="";
int maxLen = 0;
int index = 0;
for(int i = 0;i<str1Lenth;i++){
for(int j = 0;j<str2Lenth;j++){
if(arrchar1[i]==arrchar2[j]){
int i1 = i;
int j1 = j;
int count = 1;
while((i1+1)<str1Lenth&&(j1+1)<str2Lenth&&arrchar1[++i1]==arrchar2[++j1]){
count++;
}
if(count>maxLen){
maxLen=count;
index = i;
}
}
}
}
str3 = str1.substring(index, index+maxLen);
//System.out.println(str3);
return maxLen;
}