int findMaxSubstringLen(String input_1, String input_2){
//比较两个字符串长度,取小的长度
int minSize = input_1.length() > input_2.length()? input_2.length(): input_1.length();
String small = input_1.length() > input_2.length()? input_2: input_1;
String big = input_1.length() > input_2.length()? input_1: input_2;
for(int i = 0; i < minSize; i++){
for(int j = i; j >= 0; j--){
int startIndex = i - j;
int endIndex = minSize - j;
String tempSubString = small.substring(startIndex, endIndex);
//遍历出来的字串是否包含在较大字符串中
if(big.contains(tempSubString)){
return tempSubString.length();
}
}
}
return 0;
}
思路:让小的字符串以及其子串和大的字符串比较是否被包含。
例如:“abcd”, “123456789a”比较,去遍历“abcdefg”
第一轮 “abcd” 是否包含在 “123456789cd”中 返回false
第二轮 “abc” 是否包含在 “123456789cd”中 返回false
第三轮 “bcd” 是否包含在 “123456789cd”中 返回false
第四轮 “ab” 是否包含在 “123456789cd”中 返回false
第五轮 “bc” 是否包含在 “123456789cd”中 返回false
第六轮 “cd” 是否包含在 “123456789cd”中 返回true
结果即“cd”的长度 2
本文介绍了一种用于查找两个字符串中的最长公共子串的算法。通过比较较短字符串的所有可能子串,检查它们是否包含在较长字符串中,从而找到最长的公共子串。示例演示了算法如何逐步缩小搜索范围,最终确定最长公共子串。
2517

被折叠的 条评论
为什么被折叠?



