import org.junit.Test;
public class solution {
@Test
public void testFunc(){
String s1 = "ABCD";
String s2 = "AEBD";
int res = minDistance(s1, s2);
System.out.println("res: "+res);
}
//两个字符串的最长公共子序列
public int minDistance(String word1, String word2) {
if (word1==null || word2==null) {
return 0;
}
char[] s1 = word1.toCharArray();
char[] s2 = word2.toCharArray();
return lcs(s1.length-1, s2.length-1, s1, s2);
}
private int lcs(int m, int n, char[] s1, char[] s2){
if (m<0 || n<0) {
return 0;
}
if (s1[m]==s2[n]) {
return 1+lcs(m-1, n-1, s1, s2);
}
else{
return Math.max(lcs(m, n-1, s1, s2), lcs(m-1, n, s1, s2));
}
}
}
public class solution {
@Test
public void testFunc(){
String s1 = "ABCD";
String s2 = "AEBD";
int res = minDistance(s1, s2);
System.out.println("res: "+res);
}
//两个字符串的最长公共子序列
public int minDistance(String word1, String word2) {
if (word1==null || word2==null) {
return 0;
}
char[] s1 = word1.toCharArray();
char[] s2 = word2.toCharArray();
return lcs(s1.length-1, s2.length-1, s1, s2);
}
private int lcs(int m, int n, char[] s1, char[] s2){
if (m<0 || n<0) {
return 0;
}
if (s1[m]==s2[n]) {
return 1+lcs(m-1, n-1, s1, s2);
}
else{
return Math.max(lcs(m, n-1, s1, s2), lcs(m-1, n, s1, s2));
}
}
}