Edit Distance

原创 2015年07月06日 22:46:40

原题:

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

解:

  1. Replace word1[i - 1] by word2[j - 1] (dp[i][j] = dp[i - 1][j - 1] + 1 (for replacement));
  2. Delete word1[i - 1] and word1[0..i - 2] = word2[0..j - 1] (dp[i][j] = dp[i - 1][j] + 1 (for deletion));
  3. Insert word2[j - 1] to word1[0..i - 1] and word1[0..i - 1] + word2[j - 1] = word2[0..j - 1] (dp[i][j] = dp[i][j - 1] + 1 (for insertion)).
公式:


算法理解起来其实很简单,将dp表示的矩阵花一遍就理解了


int minDistance(string word1, string word2) { 
        int m = word1.length(), n = word2.length();
        vector<vector<int> > dp(m + 1, vector<int> (n + 1, 0));
        for (int i = 1; i <= m; i++)
            dp[i][0] = i;
        for (int j = 1; j <= n; j++)
            dp[0][j] = j;  
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (word1[i - 1] == word2[j - 1]) 
                    dp[i][j] = dp[i - 1][j - 1];
                else dp[i][j] = min(dp[i - 1][j - 1] + 1, min(dp[i][j - 1] + 1, dp[i - 1][j] + 1));
            }
        }
        return dp[m][n];
    }
解法来自leetcode



Approximating Edit Distance Efficiently

  • 2009年12月10日 15:19
  • 159KB
  • 下载

edit_distance.pl

  • 2013年07月10日 19:32
  • 928B
  • 下载

编辑距离(edit distance)

编辑距离:就是两个字符串之间,由一个转化为另一个所需的最少编辑操作次数。 许可的编辑操作包括将 (1)一个字符替换为另一个字符; (2)插入一个字符; (3)删除一个字符;   可以用动态...
  • lwbaptx
  • lwbaptx
  • 2012年03月22日 12:04
  • 639

动态规划方法求Edit Distance

  • 2011年04月12日 20:07
  • 3.28MB
  • 下载

edit distance

  • 2012年06月10日 16:12
  • 2KB
  • 下载

leetcode:Edit Distance 动态规划--用于求两个词之间的相似度

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2...

edit distance算法

  • 2014年01月02日 12:58
  • 4KB
  • 下载

Edit Distance----hard

Given two words word1 and word2 ,find the minimun number of steps required to convert word1 to word...
  • sakukaa
  • sakukaa
  • 2014年12月14日 10:41
  • 254

LeetCode072 Edit Distance

详细见:leetcode.com/problems/edit-distance Java Solution: github package leetcode; /** * Giv...
  • zxwtry
  • zxwtry
  • 2017年04月16日 22:13
  • 146
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Edit Distance
举报原因:
原因补充:

(最多只允许输入30个字)