/**
* 比较两个字符串是否含有共同的子字符串
* @param str1 字符串一
* @param str2 字符串二
* @param includeSelf 子字符串是否包括本身
* @return 比较结果
*/
public static boolean hasSameSubStr(String str1, String str2, boolean includeSelf)
{
String shortStr = str1.length() > str2.length()? str2: str1;
String longStr = str1.length() > str2.length()? str1: str2;
String temp = "";
for(int i = 0; i < shortStr.length(); i++)
{
for(int j = i + 2; j <= shortStr.length(); j++)
{
temp = shortStr.substring(i, j);
boolean flag1 = includeSelf && longStr.indexOf(temp) >= 0;
boolean flag2 = !includeSelf && !temp.equals(shortStr) && longStr.indexOf(temp) >= 0;
if(flag1 || flag2)
{
return true;
}
}
}
return false;
}
/**
* 获取两个字符串的最大的子字符串集合
* @param str1 字符串一
* @param str2 字符串二
* @param includeSelf 子字符串是否包括本身
* @return 最大的子字符串集合
*/
public static List<String> getMaxSameSubStr(String str1, String str2, boolean includeSelf)
{
String shortStr = str1.length() > str2.length()? str2: str1;
String longStr = str1.length() > str2.length()? str1: str2;
String temp = "";
int subLength = 0;
List<String> sameSubs = new ArrayList<String>();
for(int i = 0; i < shortStr.length(); i++)
{
for(int j = i + 2; j <= shortStr.length(); j++)
{
temp = shortStr.substring(i, j);
boolean flag1 = includeSelf && longStr.indexOf(temp) >= 0;
boolean flag2 = !includeSelf && !temp.equals(shortStr) && longStr.indexOf(temp) >= 0;
if(flag1 || flag2)
{
if(temp.length() > subLength)
{
subLength = temp.length();
sameSubs.clear();
sameSubs.add(temp);
}
else if(temp.length() == subLength)
{
sameSubs.add(temp);
}
}
}
}
return sameSubs;
}
/**
* 比较两个字符串是否含有子字符串,如果有,获取最大的子字符串集合
* 返回值为List,长度为2,第一个元素为boolean型,表示是否含有子字符串,第二个元素为List<String>型,表示最大子字符串的集合
* @param str1 字符串一
* @param str2 字符串二
* @param includeSelf 是否包括自身
* @return 比较结果
*/
public static List<Object> compareStrWithSub(String str1, String str2, boolean includeSelf)
{
String shortStr = str1.length() > str2.length()? str2: str1;
String longStr = str1.length() > str2.length()? str1: str2;
String temp = "";
int subLength = 0;
boolean hasSame = false;
List<String> sameSubs = new ArrayList<String>();
List<Object> ret = new ArrayList<Object>();
for(int i = 0; i < shortStr.length(); i+