package LCS最长公共子串问题;
public class LCSProcess {
public static void main(String [] args)
{
String str1 = "GCCAB";
String str2 = "GCTCCAR";
String result =getMaxString(str1,str2);
System.out.println(result);
}
private static String getMaxString(String str1, String str2)
{
String max = null;
String min = null;
max=(str1.length() > str2.length() ? str1 : str2); //取出较长的那个字符串
min=max.equals(str1) ? str2 : str1; //剩下那个为较短的字符串
for (int i = 0; i < min.length(); i++)
{
for(int start = 0, end = min.length()-i;end != min.length()+1;start++,end++)
{
String sub = min.substring(start,end);
System.out.println("第" + i + "次大循环:" + sub);
if(max.contains(sub))
return sub;
}
}
return null;
}
}
结果为:
第0次大循环:GCCAB
第1次大循环:GCCA
第1次大循环:CCAB
第2次大循环:GCC
第2次大循环:CCA
CCA