/*
要求:
已知两个字符串,String a = "abcdefghijklmnopqrstuvwxyz";
String b="1234567890abcdfrgtddd12321414";
编写代码求出这两个字符串中最大公共字符串
(最大公共字符串:比如 “abc123edf”和"bc123jg"的最大公共字符串是“bc123”)。
上传代码的时候将运算结果截图一起提交。
分析:
比较的方法需要两个字符串的传入
方法的结果需要返回一个字符串。
String getMaxSubString(String str1,String str2)
原理:大圈套小圈原理
步骤:
1.将字符串转化为字符数组
2.循环遍历某一个字符串,获取各种组合。
3.将各种组合与另一字符串进行比较,获取最大值。
class StringDemo
{
public static void main(String[] args)
{
String s1 = "abcdefghijklmnopqrstuvwxyz";
String s2 = "1234567890abcdfrgtddd12321414";
System.out.println(getMaxSubString(s1,s2));
}
public static String getMaxSubString(String s1,String s2)
{
//判断s1和s2的长短。
//设两个变量
String max = "",min="";
//取出较大和较小
max = (s1.length()>s2.length())?s1:s2;
min = (max==s2)?s1:s2;
System.out.println("max="+max);
System.out.println("min="+min);
//取较小的循环,减少降低循环次数。
for(int x=0;x<min.length();x++)
{
for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
{ //字符串的子串获取:substring(int beginIndex, int endIndex);
String temp = min.substring(y,z);
//System.out.println(temp);循环遍历的结果打印出来。
//判断是否包含contains(charSequence s);
if(max.contains(temp))//if(s1.indexOf(temp)!=-1)
return "最大公共字符串:"+temp;
}
}
return "没有公共字符串";
}
}
|