<p><span style="font-size:18px;"><span style="white-space:pre"> </span>黑马程序员---------字符串操作</span></p><span style="font-size:18px;"><span style="white-space:pre"> </span>------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;"><span style="font-size:18px;">/**
* 已知两个字符串,String a = "abcdefghijklmnopqrstuvwxyz";
* String b="1234567890abcdfrgtddd12321414";
* 编写代码求出这两个字符串中最大公共字符串(最大公共字符串:比如 “abc123edf”和"bc123jg"的最大公共字符串是“bc123”)。
*
* @author Administrator
*分析:
*判断时,一个字符串不变,另一个则通过变短来判断是否被包含,通过比较被包含时,哪个串字符更长得到结果
*
*
*/
public class Test23 {
public static void main(String[] args) {
String a = "abcdefghijklmnopqrstuvwxyz";
String b="1234567890abcdfrgtddd12321414";
//String a = "abc123edf";
//String b="bc123jg";
System.out.println("字符串A:"+a);
System.out.println("字符串B:"+b);
getMaxLine(a,b);
}
public static void getMaxLine(String a,String b)
{
String c;
String max;
String min;
int[] in=new int[3];
if(a.length()>b.length())//判断哪个的长度更长
{
max=a;
min=b;
}
else
{
max=b;
min=a;
}
for(int x=0;x<min.length()-1;x++)//获取子串的起始位
{
for(int y =x+1;y<min.length();y++)//获取子串的结束位
{
c =min.substring(x, y);//获取子串
if(max.contains(c))//判断是否包含子串
{
if(in[2]<c.length())//把子串长度,起始结束位存起来
{
in[0]=x;
in[1]=y;
in[2]=c.length();
}
}
}
}
System.out.println("最大子串:"+min.substring(in[0], in[1])+" 最大子串长度为: "+in[2]);//循环结束则打印结果
}
}</span></span>