编辑距离 -LintCode

来源:互联网 发布:梦想世界跨服传输数据 编辑:程序博客网 时间:2024/06/04 19:12

给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
插入一个字符
删除一个字符
替换一个字符
样例
给出 work1=”mart” 和 work2=”karma”
返回 3

#ifndef C119_H#define C119_H#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;class Solution {public:    /**    * @param word1 & word2: Two string.    * @return: The minimum number of steps.    */    int minDistance(string word1, string word2) {        // write your code here        int m = word1.size();        int n = word2.size();        vector<vector<int>> dp(m + 1, vector<int>(n + 1));        for (int i = 0; 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][j-1],min(dp[i - 1][j], dp[i - 1][j - 1])) + 1;            }        }        return dp[m][n];    }};#endif
原创粉丝点击