一.题目描述
给定两个字符串str1和str2,输出两个字符串的最长公共子串
题目保证str1和str2的最长公共子串存在且唯一。
二.代码
public String LCS (String str1, String str2) {
int max = 0;
int a = 0;
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
int[][] dp = new int[charArray1.length + 1][charArray2.length + 1];
for (int i = 1; i <= charArray1.length; i++) {
for (int j = 1; j <= charArray2.length; j++) {
if (charArray1[i - 1] == charArray2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
if (dp[i][j] > max) {
max = dp[i][j];
a = i;
}
}
}
}
return str1.substring(a - max, a);
}