leetcode---edit-distance---dp

来源:互联网 发布:网页版淘宝看微淘 编辑:程序博客网 时间:2024/06/01 08:17

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

class Solution {public:    int min(int a, int b, int c)    {        if(a <= b && a <= c)            return a;        else if(b <= a && b <= c)            return b;        else             return c;    }    int min(int a, int b)    {        return a < b ? a : b;    }    int minDistance(string word1, string word2)     {        int n1 = word1.size();        int n2 = word2.size();        if(n1 == 0)            return n2;        if(n2 == 0)            return n1;        vector<vector<int>> dp(n1+1, vector<int>(n2+1, 0));        for(int i=0; i<=n1; i++)            dp[i][0] = i;        for(int j=0; j<=n2; j++)            dp[0][j] = j;        for(int i=1; i<=n1; i++)        {            for(int j=1; j<=n2; 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], dp[i][j-1], dp[i-1][j-1]) + 1;            }        }        return dp[n1][n2];    }};
原创粉丝点击