动态规划两个数组的dp问题系列一>两个字符串的最小ASCII 删除和
这里写目录标题
- 题目解析:
- 状态表示:
- 状态转移方程:
- 初始化:
- 填表顺序:
- 返回值:
- 代码呈现:
题目解析:
状态表示:
状态转移方程:
初始化:
填表顺序:
根据状态转移方程从左到右,从上往下
返回值:
代码呈现:
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;
}
}