通过删除的最小次数得出两个相同的字符串--LCS变式题
Posted C_YCBX Py_YYDS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过删除的最小次数得出两个相同的字符串--LCS变式题相关的知识,希望对你有一定的参考价值。
题目
解题说明
给定两个字符串 word1
和 word2
,分别删除若干字符之后使得两个字符串相同,则剩下的字符为两个字符串的公共子序列。为了使删除操作的次数最少,剩下的字符应尽可能多。当剩下的字符为两个字符串的最长公共子序列时,删除操作的次数最少。
解题代码
标准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