最长公共子串. java_求两个字符串的最长公共子串——Java实现

  • Post author:
  • Post category:java


要求:求两个字符串的最长公共子串,如“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() < strTwo.length()){

max = strTwo;

min = strOne;

} else{

max = strTwo;

min = strOne;

}

String current = “”;

// 遍历较短的字符串,并依次减少短字符串的字符数量,判断长字符是否包含该子串

for(int i=0; i

for(int begin=0, end=min.length()-i; end<=min.length(); begin++, end++){

current = min.substring(begin, end);

if(max.contains(current)){

return current;

}

}

}

return null;

}

public static void main(String[] args) {

String strOne = “abcdefg”;

String strTwo = “adefgwgeweg”;

String result = Main03.maxSubstring(strOne, strTwo);

System.out.println(result);

}

}

9444af008a7d27a46599fb0fec1213ae.png

总觉得这题,输出结果和题意不相符合,结果2,是不是把B序列翻转,求出两者最长公共子串



版权声明:本文为weixin_34778803原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。