D47|leetcode 583、72

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

思路:

dp[i][j]:以i-1为下标的word1和以j-1为下标的word2,要达到相等需要删除的最小操作次数为dp[i][j]。递推关系:如果nums1[i-1]==nums2[j-1],此时dp[i][j]=dp[i-1][j-1];如果nums1[i-1]!=nums2[j-1],此时有三种情况:1、删word1,dp[i][j]=dp[i-1][j]+1,2、删word2,dp[i][j]=dp[i][j-1]+1,3、删除word1和word2,dp[i][j]=dp[i-1][j-1]+2,以上三个取最小值。4、初始化:由递推关系可以得到需要初始化dp[0][j]和dp[i][0],由dp数组的含义不难得到dp[0][j]=j,dp[i][0]=i;遍历顺序:从小到大,从前向后。

代码:

class Solution {

public:

    int minDistance(string word1, string word2) {

        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++)

            {

                if(word1[i-1]==word2[j-1])

                {

                    dp[i][j]=dp[i-1][j-1];

                }

                else{

                    dp[i][j]=min(min(dp[i-1][j]+1,dp[i][j-1]+1),dp[i-1][j-1]+2);

                }

            }

        }

        return dp[word1.size()][word2.size()];

    }

};


72. 编辑距离

思路:

这道题的整体思路和上面一道题是一致的,只不过这里多了另外的两种操作:增和替换。因为是对一个元素操作,对word1的增加可以理解为对word2的减,而替换是指在word1[i]!=word2[j]的情况下,将word1[i]替换成word2[j],最少的操作次数就是dp[i-1][j-1]+1,除此之外,和上一题的思路都是一致的。

代码:

class Solution {

public:

    int minDistance(string word1, string word2) {

        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++)

            {

                if(word1[i-1]==word2[j-1]) dp[i][j]=dp[i-1][j-1];

                else

                {

                    dp[i][j]=min(min(dp[i-1][j]+1,dp[i][j-1]+1),dp[i-1][j-1]+1);

                }

            }

        }

        return dp[word1.size()][word2.size()];

    }

};

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容