![]()
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;
}