1 package weekpratisce; 2 3 ///给定两个字符串,获取两个字符串中最大相同的子串 4 public class Demo9 { 5 public static void main(String[] args) { 6 String xx = "aaaaaaaaaaddddddd", yy = "45ddddda"; 7 String str = getMaxsubstring(xx, yy); 8 System.out.println(str); 9 // String str=xx.substring(1,10); 10 // System.out.println(str); 11 } 12 /** 13 * boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。 14 */ 15 16 // 获取两个字符串中最大相同子串。 17 /** 18 * 思路:1、将短的那个子串按照长度递减的方式获取到。 2、用长串去判断是否包含每次获取到的子串,若包含则就找到最大相同子串 19 * 20 * @param s1 21 * @param s2 22 * @return max substring 23 */ 24 public static String getMaxsubstring(String s1, String s2) { 25 String max = ""; 26 String min = ""; 27 // 找出最短长度 28 max = (s1.length() > s2.length()) ? s1 : s2; 29 min = (max == s1) ? s2 : s1; 30 for (int i = 0; i < min.length(); i++) { 31 for (int j = 0, k = min.length() - i; k != min.length() + 1; j++, k++) { 32 String temp = min.substring(j, k); 33 if (max.contains(temp)) { 34 return temp; 35 } 36 } 37 } 38 39 return null; 40 41 } 42 43 }