【动态规划】 583. 两个字符串的删除操作
2024-01-02 18:38:11
583. 两个字符串的删除操作
解题思路
- 计算两个字符串的最小删除操作等价于 计算两个字符串的最大公共子序列
- 通过dp计算两个字符串的最大公共子序列 然后减去
class Solution {
int[][] memo;
public int minDistance(String word1, String word2) {
// 计算两个字符串的最小删除操作等价于 计算两个字符串的最大公共子序列
int m = word1.length();
int n = word2.length();
memo = new int[m + 1][n + 1];
return m + n - dp(word1,word2,m,n) * 2;
}
int dp(String s1,String s2,int m,int n){
if(m < 0 || n < 0){
return 0;
}
for(int i = 1; i <= m; i++){
for(int j = 1; j <= n; j++){
if(s1.charAt(i -1) == s2.charAt(j - 1)){
// 遇到相同的字符
memo[i][j] = memo[i - 1][j - 1] + 1;
}else{
memo[i][j] = Math.max(memo[i][j - 1],memo[i - 1][j]);
}
}
}
return memo[m][n];
}
}
文章来源:https://blog.csdn.net/qq_44653420/article/details/135346372
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!