算法思想:
创建二维数组L[m][n]
将二维数组第一行,第一列值全部设置为0;
如果str1[m] == str2[n],则L[m,n] = L[m - 1, n -1] + 1;
如果str1[m] != str2[n],则L[m,n] = max{L[m,n - 1],L[m - 1, n]}
基本核心代码:
public static int lcsLength(char []x,char[]y,int [][]b)
{
int m =x.length-1;
int n =y.length-1;
int [][]c=new int [m+1][n+1];
for(int i=1;i<=m;i++)
c[i][0]=0;
for(int i=1;i<=n;i++)
{
c[0][i]=0;
}
for(int i=1;i<=m;i++)
for(int j =1;i<=n;j++){
if(x[i]==y[j]){
c[i][j]=c[i-1][j-1]+1;
}
else if(c[i-1][j]>=c[i][j-1]){
c[i][j]=c[i-1][j];
}
else{
c[i][j]=c[i][j-1];
}
}
return c[m][n];
}