自己电脑做的网站如何映射到公网,做logo赚钱的网站,企业管理软件系统网,好看的单页面网站给定两个字符串 text1 和 text2#xff0c;返回这两个字符串的最长公共子序列的长度。
一个字符串的 子序列 是指这样一个新的字符串#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符#xff08;也可以不删除任何字符#xff09;后组成的新字符串。 …给定两个字符串 text1 和 text2返回这两个字符串的最长公共子序列的长度。
一个字符串的 子序列 是指这样一个新的字符串它是由原字符串在不改变字符的相对顺序的情况下删除某些字符也可以不删除任何字符后组成的新字符串。 例如“ace” 是 “abcde” 的子序列但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。
若这两个字符串没有公共子序列则返回 0。 解题思路 数组含义dp[i][j]text1前i个和text2前j个字符的最长公共子序列的长度。 状态转移如果当前位置ij的字符相等则在i-1j-1的结果基础上加1否则就等于(i-1,j)或者ij-1的结果的较大值。
二维动态规划代码 public int longestCommonSubsequence(String text1, String text2) {int ntext1.length(),mtext2.length();int[][] dpnew int[n1][m1];for(int i1;in;i)for(int j1;jm;j)if(text1.charAt(i-1)text2.charAt(j-1))dp[i][j] dp[i-1][j-1]1;else dp[i][j] Math.max(dp[i-1][j],dp[i][j-1]);return dp[n][m];}一维动态规划代码
class Solution {public int longestCommonSubsequence(String text1, String text2) {int ntext1.length(),mtext2.length();int[] dpnew int[m1];for(int i1;in;i){int last0;for(int j1;jm;j){int tempdp[j];if(text1.charAt(i-1)text2.charAt(j-1))dp[j]last1;else dp[j] Math.max(dp[j-1],dp[j]);lasttemp;}}return dp[m];}
}