72. 编辑距离

72. 编辑距离


题目链接:72. 编辑距离

代码如下:

//动态规划
//参考leetcode官方题解
class Solution {
public:
    int minDistance(string word1, string word2) {
        if(word1.size()*word2.size()==0)    return word1.size()+word2.size();
        //dp数组
        vector<vector<int>> dp(word1.size()+1,vector<int>(word2.size()+1,0));
        
        //初始化边界值
        for(int i=0;i<=word1.size();i++)
            dp[i][0]=i;
        for(int j=0;j<=word2.size();j++)
            dp[0][j]=j;

        for(int i=1;i<=word1.size();i++)
        {
            for(int j=1;j<=word2.size();j++)
            {
                int left=dp[i-1][j]+1;
                int down=dp[i][j-1]+1;
                int left_down=dp[i-1][j-1];
                if(word1[i-1]!=word2[j-1])
                    left_down+=1;
                dp[i][j]=min(min(left,down),left_down);
            }
        }
        return dp[word1.size()][word2.size()];
    }
};

你可能感兴趣的:(leetcode,c++)