通过删除的最小次数得出两个相同的字符串--LCS变式题

Posted C_YCBX Py_YYDS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过删除的最小次数得出两个相同的字符串--LCS变式题相关的知识,希望对你有一定的参考价值。


题目


OJ平台

解题说明

给定两个字符串 word1word2 ,分别删除若干字符之后使得两个字符串相同,则剩下的字符为两个字符串的公共子序列。为了使删除操作的次数最少,剩下的字符应尽可能多。当剩下的字符为两个字符串的最长公共子序列时,删除操作的次数最少。

解题代码

标准LCS解题代码

class Solution {
public:
    int minDistance(string word1, string word2) {
        const int n = word1.size(),m = word2.size();
        int dp[n+1][m+1]; memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(word1[i-1]==word2[j-1]){
                    dp[i][j] = dp[i-1][j-1]+1;
                }else{
                    dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
                }
            }
        }
        int mxLen = dp[n][m];

        return m+n-2*mxLen;
    }
};

以上是关于通过删除的最小次数得出两个相同的字符串--LCS变式题的主要内容,如果未能解决你的问题,请参考以下文章

HDU 6774 String Distance 序列自动机优化lcs

HDU 6774 String Distance 序列自动机优化lcs

动态规划-最长公共子序列LCS

找到获得“好”字符串的最小移动次数

[杭电多校第二场]1012 String Distance(lcs)

字符串暴力枚举子序列求LCS