在网上看了一些求两个字符串的最大公共子串的例子,因为多是用了一些算法的思想,自己看的不太懂,就自己试着写了一个,结果还是有些惊喜的,虽然应该不是最简单和高效的,但应该是代码比较少的了吧,呵呵~小骄傲一下。
public class CompareStrM
{
public static void main(String[] args)
{
String str1 = "今天,听到一首歌是这么唱的:“明月几时有,把酒问青天”。。。。";
String str2 = "苏轼的“明月几时有,把酒问青天”是千古名句";
String minStr = str1.length() >= str2.length() ? str2 : str1;
String maxStr = str1.length() <= str2.length() ? str2 : str1;
ArrayList<String> lList = new ArrayList<String>();
int maxLength = 1;
for (int i = 0; i < minStr.length() - maxLength * 2; i++) {
String subStr = minStr.substring(i, i + maxLength);
if (maxStr.contains(subStr)) {
String str = null;
int len = maxLength;
do {
len++;
str = minStr.substring(i, i + len);
} while (maxStr.contains(str));
if (len-- >= maxLength) {
lList.add(str.substring(0, str.length() - 1));
maxLength = len;
}
}
}
System.out.println("MaxLength: " + maxLength + "\n");
for (String s : lList) {
if (s.length() == maxLength) {
System.out.print("最大相同子串是: " + s);
}
}
}
}
之后,也会继续整理一些找到的资料贴到下面。