编辑距离

来源:互联网 发布:java 打包maven工程 编辑:程序博客网 时间:2024/06/05 22:58

给定两个单词word1和word2,找到需要转换的最小步数,每一个操作被计算为1个步骤
3个允许的操作:
插入一个字符
删除一个字符
替换字符

动态规划

int minDistance(string word1, string word2) {    const int m = word1.size();    const int n = word2.size();    int result[m + 1][n + 1];    for (int i = 0; i <= m; ++i)        result[i][0] = i;    for (int j = 0; j <= n; ++j)        result[0][j] = j;    for (int i = 1; i <= m; ++i)    {        for (int j = 1; j <= n; ++j)        {            if (word1[i - 1] == word2[j - 1])                result[i][j] = result[i - 1][j - 1];            else            {                int mn = min(result[i - 1][j], result[i][j - 1]);                result[i][j] = 1 + min(result[i - 1][j - 1], mn);            }        }    }    return result[m][n];}
0 0
原创粉丝点击