力扣刷题记录126.1-----583. 两个字符串的删除操作

目录

  • 一、题目
  • 二、代码
  • 三、运行结果


一、题目

力扣刷题记录126.1-----583. 两个字符串的删除操作_第1张图片

二、代码

class Solution 
{
public:
    int minDistance(string word1, string word2) 
    {
       int i,j;
       int return_int=0;
       int max_length=0;
       vector<vector<int>> dp(word1.size(),vector<int>(word2.size(),0));
       for(i=0;i<word1.size();i++)
       {
           for(j=0;j<word2.size();j++)
           {
             if(i==0&&j==0)
             {
                 if(word1[i]==word2[j])  dp[0][0]=1;
             }
             else if(i==0&&j!=0)
             {
                 if(word1[i]==word2[j])   dp[0][j]=1;
                 else dp[0][j]=dp[0][j-1];
             }
             else if(i!=0&&j==0)
             {
                 if(word1[i]==word2[j])   dp[i][0]=1;
                 else dp[i][0]=dp[i-1][0];
             }
             else
             {
                 dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
                 if(word1[i]==word2[j])
                 {
                      dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
                 }
             }

             if(dp[i][j]>max_length)  max_length=dp[i][j];

              // std::cout<<"  "<
           }
              // std::cout<
       }

       return_int=word1.size()+word2.size()-max_length*2;

       return return_int;
    }
};

三、运行结果

力扣刷题记录126.1-----583. 两个字符串的删除操作_第2张图片

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