题:给定两个字符串,求两个字符串公共的子序列中的最长长度。
这个刚开始想看答案,后来自己想想发现也不难想。
代码:
public class lcs {
public static void main(String[] args) {
String a1 = "abcd";
String a = '1'+a1;
int lena = a.length();
String b1 = "cxbydz";
String b = '1'+b1;
int lenb = b.length();
char[] achar = a.toCharArray();
char[] bchar = b.toCharArray();
int[][] lcs = new int[lena+1][lenb+1];
for(int i = 1 ; i < lena ; i++){
for(int j = 1 ; j < lenb ; j++){
if(achar[i]==bchar[j])lcs[i][j]=lcs[i-1][j-1]+1;
else lcs[i][j] = lcs[i-1][j]>lcs[i][j-1]?lcs[i-1][j]:lcs[i][j-1];
}
}
for(int i = 0 ; i < lena ; i++){
for(int j = 0 ; j < lenb ; j++){
System.out.print(lcs[i][j]+" ");
}System.out.println();
}
}
}