我尝试制作动态算法来计算两个字符串之间的距离。例如,如果我有“casa”和“cara”,则输出应为2(1个插入+ 1个删除),但我得到1.这是算法:
public static int distance(String word1, String word2) {
int dp[][] = new int[m+1][n+1];
for (int i=0; i<=m; i++) {
for (int j=0; j<=n; j++) {
if (i==0)
dp[i][j] = j;
else if (j==0)
dp[i][j] = i;
else if (str1.charAt(i-1) == str2.charAt(j-1))
dp[i][j] = dp[i-1][j-1];
else {
int rep=dp[i-1][j-1];
int ins=dp[i][j-1];
int del=dp[i-1][j];
dp[i][j] = 1 + Math.min(rep, Math.min(ins, del));
}
}
}
return dp[m][n];
}
你能找到我导致错误的代码吗? 为什么使用字符串“casa”和“cara”,此算法的输出为1而不是2?