版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
求解两个字符串的最大字串
/**
* Return the max substring for two strings
*
* @param str1
* @param str2
*
*/
public static String maxSubString(String str1, String str2) {
String str = new String();
// Make the long string str1, the other str2
if (str1.length() < str2.length()) {
String temp = str1;
str1 = str2;
str2 = temp;
}
// if the long string contains short string, return short string
if (str1.contains(str2))
return str2;
// From the longest specified length string, match it, from left to right.
for (int i = str2.length() - 1; i >= 0; i--) {
for(int j = 0; (j + i) <str2.length() ; j ++) {
// if match successfully, return it
str = str2.substring(j, j+i);
if(str1.contains(str))
return str;
}
}
return str;
}
}
思路
- 现根据两个字符串的长度交换两个字符串,用短的进行判断。
- 如果较长的字符串包含较短的字符串,则返回短的字符串
- 将短字符串的长度开始,进行一段一段的匹配,从长度长的开始,可以找到最长的子字符串。