Day48||● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇

● 583. 两个字符串的删除操作

class Solution {
public:
    int minDistance(string word1, string word2) {
        vector > dp(word1.size()+1,vector(word2.size()+1,0));
        for(int i=0;i

● 72. 编辑距离

有一个很巧妙的想法,删一个和增加一个的次数是一样的,所以我们只用去考虑删除的情况就好了。

class Solution {
public:
    int minDistance(string word1, string word2) {
            vector > dp(word1.size()+1,vector (word2.size()+1,0));
            for(int i=0;i<=word1.size();i++) dp[i][0]=i;
            for(int i=0;i<=word2.size();i++) dp[0][i]=i;
            for(int i=1;i<=word1.size();i++)
            {
                for(int j=1;j<=word2.size();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-1]+1,dp[i][j-1]+1,dp[i-1][j]+1});
                }
            }
            return dp[word1.size()][word2.size()];

    }
};

你可能感兴趣的:(算法,leetcode,动态规划)