1、前言

2、思路
还是使用编辑距离的思路来做。话说,关于两个字符串的删除或者其他操作变成另一个字符串的题,貌似都可以使用编辑距离的思路来做,非常简单直观。
3、代码
class Solution {
public int minimumDeleteSum(String s1, String s2) {
int m = s1.length(), n = s2.length();
int[][] dp = new int[m + 1][n + 1];
for(int i = 1; i <= m; i++){
dp[i][0] = dp[i - 1][0] + s1.charAt(i - 1);
}
for(int i = 1; i <= n; i++){
dp[0][i] = dp[0][i - 1] + s2.charAt(i - 1);
}
for(int i = 1; i <= m; i++){
for(int j = 1; j <= n; j++){
if(s1.charAt(i - 1) == s2.charAt(j - 1)){
dp[i][j] = dp[i - 1][j - 1];
}else{
dp[i][j] = min(dp[i - 1][j - 1] + s1.charAt(i - 1) + s2.charAt(j - 1),
dp[i - 1][j] + s1.charAt(i - 1), dp[i][j - 1] + s2.charAt(j - 1));
}
}
}
return dp[m][n];
}
private int min(int one, int two, int three){
return Math.min(one, Math.min(two, three));
}
}
网友评论