最小编辑代价
给定两个字符串str1和str2,再给定三个整数ic,dc和rc,分别代表插入、删除和替换一个字符的代价,请输出将str1编辑成str2的最小代价。
public class Solution {
public int minEditCost(String str1, String str2, int ic, int dc, int rc) {
int n = str1.length();
int m = str2.length();
int[][] dp = new int[n + 1][m + 1];
for (int i = 1; i <= n; ++i) {
dp[i][0] = dc * i;
}
for (int i = 1; i <= m; ++i) {
dp[0][i] = ic * i;
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1];
} else {
dp[i][j] = Math.min(dp[i - 1][j - 1] + rc,
Math.min(dp[i - 1][j] + dc, dp[i][j - 1] + ic));
}
}
}
return dp[n][m];
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号