最短编辑距离问题:详细解释(https://blog.csdn.net/ac540101928/article/details/52786435)
package bytedance.bytedance;
import java.util.Scanner;
//将字符串变为奇数偶数之间不同的最短编辑距离
//变形:字符串A到B的最短编辑距离
//输入fxpimu、xwrs,输出5,输入cafe和coffee。输出3
public class MinEditLength {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String a=in.nextLine();
String b=in.nextLine();
System.out.println(test(a,b));
}
public static int test(String a,String b){
if (a.equals(null)||b.equals(null))
return 0;
if (a==b){
return 0;
}
int result=0;
int[][] dp=new int[a.length()+1][b.length()+1];
//初始化
for (int i = 0; i <dp.length ; i++) {
dp[i][0]=i;
} for (int i = 0; i <dp[0].length ; i++) {
dp[0][i]=i;
}
for (int i = 1; i <dp.length ; i++) {
for (int j = 1; j <dp[0].length ; j++) {
int temp=Math.min(dp[i][j-1]+1,dp[i-1][j]+1);
dp[i][j]=Math.min(temp,dp[i-1][j-1]+((a.charAt(i-1)==b.charAt(j-1))?0:1));
result=dp[i][j];
}
}
return result;
}
}