一般做外单的有哪些网站,子域名的网站放到哪里去,网站集群怎么做,东南亚cod建站工具题目描述
给定两个字符串s1 和 s2#xff0c;返回 使两个字符串相等所需删除字符的 ASCII 值的最小和 。
示例 思路
这个题的解法一和最长公共子序列的解法大致相同#xff0c;我们可以在此代码基础上稍微更改即可。
代码如下
解法一 public int minimumDeleteSum1(Stri…题目描述
给定两个字符串s1 和 s2返回 使两个字符串相等所需删除字符的 ASCII 值的最小和 。
示例 思路
这个题的解法一和最长公共子序列的解法大致相同我们可以在此代码基础上稍微更改即可。
代码如下
解法一 public int minimumDeleteSum1(String s1, String s2) {int m s1.length(), n s2.length();// dp记录的是最长公共子串的ASCII码值int[][] dp new int[m 1][n 1];int res 0;// 先统计两个字符串的ASCII码值for(char c : s1.toCharArray()){res c;}for(char c : s2.toCharArray()){res c;}for(int i 1;i dp.length;i){for(int j 1;j dp[0].length;j){if(s1.charAt(i - 1) s2.charAt(j - 1)){// 最长公共子序列加1此处我们加的是ASCII码值dp[i][j] dp[i - 1][j - 1] s1.charAt(i - 1) * 2;}else{dp[i][j] Math.max(dp[i - 1][j], dp[i][j - 1]);}}}// 用总的ASCII码减去公共子串的ASCII码就是所求return res - dp[m][n];}解法二 public int minimumDeleteSum(String s1, String s2) {int m s1.length(), n s2.length();// 记录删除字符最小的ASCII码值int[][] dp new int[m 1][n 1];// 初始化// 当s2为空for(int i 1;i m 1;i){dp[i][0] dp[i - 1][0] s1.charAt(i - 1);}// 当s1为空for(int i 1;i n 1;i){dp[0][i] dp[0][i - 1] s2.charAt(i - 1);}for(int i 1;i dp.length;i){for(int j 1;j dp[0].length;j){if(s1.charAt(i - 1) s2.charAt(j - 1)){dp[i][j] dp[i - 1][j - 1];}else{dp[i][j] Math.min(dp[i - 1][j] s1.charAt(i - 1), dp[i][j - 1] s2.charAt(j - 1));}}}return dp[m][n];}