private static int MaxLength(String str1, String str2) { String min = ""; String max = ""; //判断str1是不是null if (str1 == null) { str1 = ""; } //判断str2是不是null if (str2 == null) { str2 = ""; } //如果str1=“”并且str2="",返回0 if (str1.equals("") && str2.equals("")) { return 0; } //找出str1和str2中长度最小的 if (str1.length() > str2.length()) { min = str2; max = str1; } else { max = str2; min = str1; } //将最小的转换成char数组 char[] charArray = min.toCharArray(); int length = charArray.length; //每次循环判断子串是长串的长度 int length1 = 0; // 最终长度 int length2 = 0; //将转换成char数组的短串遍历 for (int i = 0; i < length; i++) { // 将单个字符转成string String minSon = String.valueOf(charArray[i]); // 如果子串属于最大的字符串 if (max.indexOf(minSon) != -1) { // 子串在短串中的下标 int indexOf = min.indexOf(minSon); for (int j = 1; j <= min.length() - indexOf; j++) { String substring = min.substring(indexOf, indexOf + j); // 如果长度等于-1,表示没有找到 if (max.indexOf(substring) == -1) { length1 = min.substring(indexOf, indexOf + j - 1) .length(); if (length1 >= length2) { length2 = length1; } //如果没有找到,则跳出本次循环,继续循环char数组的比较 break; } else { length1 = min.substring(indexOf, indexOf + j).length(); if (length1 >= length2) { length2 = length1; } } } } } return length2; }