• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

最小编辑代价

开发技术 开发技术 5小时前 3次浏览

链接

给定两个字符串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];
    }
}

程序员灯塔
转载请注明原文链接:最小编辑代价
喜欢 (0)