1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution { public int minimumDeleteSum(String s1, String s2) { int m = s1.length(), n = s2.length();
int[][] dp = new int[m + 1][n + 1]; int sum = 0; for (int i = 1; i <= m; i++) { sum += s1.charAt(i - 1); dp[i][0] = sum; } sum = 0; for (int j = 1; j <= n; j++) { sum += s2.charAt(j - 1); dp[0][j] = sum; }
for (int i = 1; i <= m; i++) { char a = s1.charAt(i - 1); for (int j = 1; j <= n; j++) { char b = s2.charAt(j - 1); if (a == b) { dp[i][j] = dp[i - 1][j - 1]; } else { dp[i][j] = Math.min(dp[i - 1][j] + a, dp[i][j - 1] + b); } } }
return dp[m][n]; } }
|
References
712. Minimum ASCII Delete Sum for Two Strings