例题:假如String str1="ilovejava" String str2="lovejava" 那么输出结果就是lovejava.
如果String str1="i love java" String str2="i java" 那么输出结果就是java
代码:
package cn.itcast.demo3;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
String str1 =s.next();
String str2=s.next();
String str = sub(str1,str2);
System.out.println(str);
}
//求两个字符串的最大公共子串
/**
* 求两个字符串的最大相同子串,思路:
* 1、将短的字符串,按照长度递减的方式获取子串(核心)
* 2、将每个获取的子串,判断是否在长的字符串中存在
* */
private static String sub(String str1,String str2) {
String maxStr="";
String minStr="";
//判断最小的子串
maxStr=str1.length()>str2.length()?str1:str2;//找到长度最大的字符串
minStr=str1.length()<str2.length()?str1:str2;//找到长度最小的字符串
for(int i=0;i<minStr.length();i++){//遍历小的字符串
for(int start=0,end=minStr.length()-i;end<=minStr.length();start++,end++){//end>=minStr.length()
if(maxStr.contains(minStr.substring(start, end))){//判断大字符串是否包含子字符串
return minStr.substring(start, end);
}
}
}
return "";
}
}
运行结果:从控制台输入两个字符串