● 583. 两个字符串的删除操作 ● 72. 编辑距离

  •  583. 两个字符串的删除操作 
class Solution {
public:
    int minDistance(string word1, string word2) 
    {
        int len1=word1.size(),len2=word2.size();
        vector>dp(len1+1,vector(len2+1,INT_MAX));
        for(int i=0;i<=len1;i++)
        dp[i][0]=i;
        for(int j=0;j<=len2;j++)
        dp[0][j]=j;
        for(int i=1;i<=len1;i++)
        {
            for(int j=1;j<=len2;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,dp[i][j-1]+1);}
            }
        }
return dp[len1][len2];
    }
};

  •  72. 编辑距离 

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

    }
};

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