解法一:动态规划
参考官方题解:https://leetcode-cn.com/problems/minimum-ascii-delete-sum-for-two-strings/solution/liang-ge-zi-fu-chuan-de-zui-xiao-asciishan-chu-he-/
想不到啊😟
class Solution {
public int minimumDeleteSum(String s1, String s2) {
final int len1 = s1.length();
final int len2 = s2.length();
// dp[i][j]表示s1[i:]和s2[j:]相等时的最小字符和
int[][] dp = new int[len1 + 1][len2 + 1];
dp[len1][len2] = 0;
for (int i = len1 - 1; i >= 0; --i) {
dp[i][len2] = dp[i + 1][len2] + s1.charAt(i);
}
for (int i = len2 - 1; i >= 0; --i) {
dp[len1][i] = dp[len1][i + 1] + s2.charAt(i);
}
for (int i = len1 - 1; i >= 0; --i) {
for (int j = len2 - 1; j >= 0; --j) {
if (s1.charAt(i) == s2.charAt(j)) {
dp[i][j] = dp[i + 1][j + 1];
} else {
dp[i][j] = Math.min(dp[i][j + 1] + s2.charAt(j), dp[i + 1][j] + s1.charAt(i));
}
}
}
return dp[0][0];
}
}