题目
分析
最小编辑距离
代码
public int minEditCost (String str1, String str2, int ic, int dc, int rc) {
int str1Len = str1.length();
int str2Len = str2.length();
int[][] dp = new int[str1.length() + 1][str2.length() + 1];
if(str1Len == 0) {
return str2Len * ic;
}
if(str2Len == 0) {
return str1Len *dc;
}
for(int i = 0; i <=str1Len; i++) {
dp[i][0] = i * dc;
}
for(int i = 0; i <= str2Len; i++) {
dp[0][i] = i * ic;
}
for(int i = 1; i < str1Len + 1; i++) {
for(int j = 1; j < str2Len + 1; j++){
int up = dp[i-1][j] + dc;
int left = dp[i][j-1] + ic;
int left_up = dp[i-1][j-1];
if(str1.charAt(i-1) != str2.charAt(j-1)) {
left_up = left_up + rc;
}
dp[i][j] = Math.min(up,Math.min(left,left_up));
}
}
return dp[str1Len][str2Len];
}