学堂在线邓俊辉老师绪论中lcs实现,大致思路邓老师已近说了,那我就废话不多说,直接上代码
private static String lcs(char[] c1, int i, int j, char[] c2, int k, int l,String string) {
// TODO Auto-generated method stub
if (j==-1||l==-1) {
return "";
}
if (c1[j]==c2[l]) {
String s=lcs(c1, i, j-1, c2, k, l-1,string)+c1[j];
return s;
}else {//如果不等,则每个分别减一来比较,c1减一和c2比要么c2减1和c1比,取他们中最长
String s1=lcs(c1, i, j-1, c2, k, l,string);
String s2=lcs(c1, i, j, c2, k, l-1,string);
if (s1.length()>s2.length()) {
return s1;
}else {
return s2;
}
}
}
代码实现由几个没用的参数,如i,j可以完全不要,还有重复的无聊命名,还可以再精简一下,不想精简了就直接放上来吧。