要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的)
public class Main03{
// 求解两个字符号的最长公共子串
public static String maxSubstring(String strOne, String strTwo){
// 参数检查
if(strOne==null || strTwo == null){
return null;
}
if(strOne.equals("") || strTwo.equals("")){
return null;
}
// 二者中较长的字符串
String max = "";
// 二者中较短的字符串
String min = "";
if(strOne.length() max = strTwo;
min = strOne;
} else{
max = strTwo;
min = strOne;
}
String current = "";
// 遍历较短的字符串,并依次减少短字符串的字符数量,判断长字符是否包含该子串
for(int i=0; i
for(int begin&#61;0, end&#61;min.length()-i; end<&#61;min.length(); begin&#43;&#43;, end&#43;&#43;){
current &#61; min.substring(begin, end);
if(max.contains(current)){
return current;
}
}
}
return null;
}
public static void main(String[] args) {
String strOne &#61; "abcdefg";
String strTwo &#61; "adefgwgeweg";
String result &#61; Main03.maxSubstring(strOne, strTwo);
System.out.println(result);
}
}
总觉得这题&#xff0c;输出结果和题意不相符合&#xff0c;结果2&#xff0c;是不是把B序列翻转&#xff0c;求出两者最长公共子串