根据状态转移方程从左到右,从上往下
class Solution {
public int minimumDeleteSum(String s1, String s2) {
int m = s1.length();
int n = s2.length();
int[][] dp = new int[m+1][n+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] = Math.max(dp[i][j], dp[i-1][j-1] + s1.charAt(i-1));
else
dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);
}
//统计元素和
int sum = 0;
for(char x : s1.toCharArray()) sum += x;
for(char y : s2.toCharArray()) sum += y;
return sum - dp[m][n] * 2;
}
}