最长公共子串 java
时间: 2024-05-17 14:11:17 浏览: 115
最长公共子串是指在两个或多个字符串中,找到最长的公共子串。具体来说,给定两个字符串S1和S2,它们的最长公共子串是在S1和S2中都出现的最长的子串。例如,字符串S1="ABABC",字符串S2="BABCA",它们的最长公共子串是"ABC"。
在Java中,可以通过动态规划算法来解决最长公共子串问题。具体来说,可以使用一个二维数组来记录每个字符对应位置上的最长公共子串长度,然后根据这个数组来求得最长公共子串。
以下是求解最长公共子串的Java代码示例:
```java
public static String longestCommonSubstring(String s1, String s2) {
int m = s1.length();
int n = s2.length();
int[][] dp = new int[m + 1][n + 1];
int maxLength = 0;
int endIndex = 0;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (s1.charAt(i - 1) == s2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
if (dp[i][j] > maxLength) {
maxLength = dp[i][j];
endIndex = i - 1;
}
}
}
}
return s1.substring(endIndex - maxLength + 1, endIndex + 1);
}
```
阅读全文