最长公共子串算法java代码实现
时间: 2023-11-12 16:08:22 浏览: 109
最长公共子序列(java实现)
最长公共子串算法是一种用于寻找两个字符串中最长公共子串的算法。以下是一种基于动态规划的实现方式的Java代码:
```
public static String longestCommonSubstring(String str1, String str2) {
int m = str1.length();
int n = str2.length();
int[][] dp = new int[m + 1][n + 1];
int maxLen = 0;
int endIndex = 0;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
if (dp[i][j] > maxLen) {
maxLen = dp[i][j];
endIndex = i - 1;
}
}
}
}
return str1.substring(endIndex - maxLen + 1, endIndex + 1);
}
```
该算法的时间复杂度为O(mn),其中m和n分别为两个字符串的长度。
阅读全文