题目:
给定两个字符串 str1 和 str2,返回两个字符串的最长公共子串。
举例:
str1 = "1AB2345CD" str2 = "12345EF" 返回 "2345"
思路:
str1长度为M,str2长度为N,生成大小为M*N的矩阵dp ,dp[i][j]的含义是,在把str1[i] 和 str2[j] 当作公共子串最后一个字符的情况下,公共子串最长能有多长。
获取dp矩阵的代码如下:
public static int[][] getdp1(char[] str1, char[] str2) {
//初始化dp大小
int[][] dp = new int[str1.length][str2.length];
//初始化第一列
for (int i = 0;i < str1.length; i++) {
if (str1[i] == str2[0]){
dp[i][0] = 1;
} else {
dp[i][0] = 0;
}
}
//初始化第一行 第一个0位置已经初始化了,所以j从