Edit Distance

来源:互联网 发布:医生都善良知乎 编辑:程序博客网 时间:2024/05/19 22:44

Given two words word1 and word2, find the minimum number of steps required to convertword1 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


Solution:

class Solution {public:    int minDistance(string word1, string word2) {        int len1 = word1.length();        int len2 = word2.length();        vector<vector<int> > dist(len1 + 1, vector<int>(len2 + 1, 0));        for(int i = 1; i <= len1; ++i) dist[i][0] = i;        for(int i = 1; i <= len2; ++i) dist[0][i] = i;        for(int i = 1; i <= len1; ++i)            for(int j = 1; j <= len2; ++j)            {                if(word1[i-1] == word2[j-1]) dist[i][j] = dist[i-1][j-1];                else dist[i][j] = min(min(dist[i-1][j], dist[i][j-1]), dist[i-1][j-1]) + 1;            }                    return dist[len1][len2];    }};


0 0