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

Posted 知晓的老巢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求两个字符串的最长公共子串——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<min.length(); 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);
	}
}

  

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

以上是关于求两个字符串的最长公共子串——Java实现的主要内容,如果未能解决你的问题,请参考以下文章

求两个字符串的最长公共子串,要求输入两个字符串,输出他们的最长公共子串,包括长度。

java 两个字符串,求最长公共子串的长度

求两个输入的字符串的最长公共子串

寻找最长公共子串(高分)

求字符串的最长公共子串

java求最大公共子串