码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode - 72. Edit Distance

时间:2016-09-28 01:23:20      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

最小编辑距离,动态规划经典题。

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)

You have the following 3 operations permitted on a word:

a) Insert a character
b) Delete a character
c) Replace a character

参考:https://segmentfault.com/a/1190000003741294

import java.util.*;
public class Solution {
    public int minDistance(String word1, String word2) {
        if (word1 == null && word2 == null)
            return 0;
        int len1 = word1.length();
        int len2 = word2.length();
        if (len1 == 0)
            return len2;
        if (len2 == 0)
            return len1;
        int[][] dp = new int[len1+1][len2+1];
        for (int i=0; i<=len1; i++)
            dp[i][0] = i;
        for (int j=0; j<=len2; j++)
            dp[0][j] = j;
        for (int i=1; i<=len1; i++) {
            for (int j=1; j<=len2; j++) {
                int insert = dp[i][j-1] + 1;
                int delete = dp[i-1][j] + 1;
                int replace = dp[i-1][j-1] + (word1.charAt(i-1)==word2.charAt(j-1)?0:1);
                dp[i][j] = Math.min(insert, Math.min(delete, replace));
            }
        }
        return dp[len1][len2];
    }
}

 

LeetCode - 72. Edit Distance

标签:

原文地址:http://www.cnblogs.com/wxisme/p/5914657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!