String 两个字符串中最大相同子串
3,两个字符串中最大相同子串
思路:
1,既然去的是最大子串,先看短的那个字符串是否在长的字符串中
2,如果存在,短的那个就是最大子串。
3,如果不是,就将短的那个子串进行长度递减的方式去子串,去长的中判断是否存在
如果找到就不用找了
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class StringTest_2 { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 String s1="bnjfoiaahfkkaiaemmaqqihg"; 8 String s2="kkllfjhaf"; 9 String s=getMaxSubstring(s1,s2); 10 System.out.println("s="+s); 11 } 12 13 public static String getMaxSubstring(String s1, String s2) { 14 15 String max=null,min=null; 16 max=(s1.length()>s2.length())?s1:s2;//确认字符串的长度 17 min=max.equals(s1)?s2:s1; 18 19 for(int x=0;x<min.length();x++){ 20 for(int a=0, b=min.length()-x;b!=min.length()+1;a++,b++){ 21 String str=min.substring(a, b); //把字符串渐渐的变短 22 if(max.contains(str)){ 23 return str; 24 } 25 } 26 }