//求两个字符串的公共最大子串 public class GetLCStringTest { public static String getLCSring(String str1, String str2) { StringBuffer str = new StringBuffer(); int i, j; int len1, len2; len1 = str1.length(); len2 = str2.length(); int maxlen = len1 > len2 ? len1 : len2; int[] max = new int[maxlen]; int[] maxIndex = new int[maxlen]; int[] c = new int[maxlen]; for (i = 0; i < len2; i++) { for (j = len1 - 1; j >= 0; j--) { if (str2.charAt(i) == str1.charAt(j)) { if (i == 0 || j == 0) c[j] = 1; else c[j] = c[j - 1] + 1; } else { c[j] = 0; } if (c[j] > max[0]) { max[0] = c[j]; maxIndex[0] = j; for (int k = 1; k < maxlen; k++) { max[k] = 0; maxIndex[k] = 0; } } else if (c[j] == max[0]) { for (int k = 1; k < maxlen; k++) { if (max[k] == 0) { max[k] = c[j]; maxIndex[k] = j; break; } } } } } for (j = 0; j < maxlen; j++) { if (max[j] > 0) { str.append(str1.substring(maxIndex[j] - max[j] + 1, maxIndex[j] + 1)+" "); } } return str.toString().trim(); } public static void main(String[] args) { String str1 = "asdgn123456hjklqboiwe123456ghjklq"; String str2 = "yu123456wer"; System.out.println(str1); System.out.println(str2); System.out.println(getLCSring(str1, str2)); ; } }