java获取两个字符串中最大相同子串
时间: 2023-11-06 18:07:04 浏览: 91
Java获取两个字符串中最大相同子串的方法
5星 · 资源好评率100%
可以使用动态规划的思想来解决这个问题。
首先,定义一个二维数组dp[i][j],表示以第一个字符串的第i个字符和第二个字符串的第j个字符为结尾的最大相同子串的长度。
然后,遍历两个字符串,如果当前字符相同,则dp[i][j] = dp[i-1][j-1] + 1;否则,dp[i][j] = 0。
最后,遍历dp数组,找到最大的dp[i][j],即为最大相同子串的长度。可以通过记录最大长度时的i和j,来获取最大相同子串的具体内容。
代码示例:
public static String getMaxCommonSubstring(String str1, String str2) {
int len1 = str1.length();
int len2 = str2.length();
int[][] dp = new int[len1][len2];
int maxLen = 0;
int maxEnd = 0;
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
if (str1.charAt(i) == str2.charAt(j)) {
if (i == 0 || j == 0) {
dp[i][j] = 1;
} else {
dp[i][j] = dp[i-1][j-1] + 1;
}
if (dp[i][j] > maxLen) {
maxLen = dp[i][j];
maxEnd = i;
}
} else {
dp[i][j] = 0;
}
}
}
return str1.substring(maxEnd-maxLen+1, maxEnd+1);
}
阅读全文