4.获取两个字符串中最大相同子串
第一个动作,将短的那个串进行长度依次递减的子串打印。*
"abcwerthelloyuiodef"
"cvhellobnm"
思路:将短的那个子串按长度递减的方式获取到。
2.将每获取到的子串去长串中判断是否包含到
大圈套小圈 ,for嵌套循环
class StringTest3
{
public static void main(String args[])
{
String str1 = "abcwerthelloyuiodef";
String str2 = "cvhellobnm";
sop("count="+getMaxSubString(str1,str2));
}
public stataic String getMaxSubString(String s1,String s2)
{
String max = "",min = "";
max = (s1.length()>s2.length())?s1:s2;//查找长的字符串
min = (max ==s1)?s2:s1;//查找短的字符串
/*
大圈套小圈,外循环控制行,内层循环控制着执行的列
String str1 = "abcwerthelloyuiodef";
String str2 = "cvhellobnm"
拿str2判断是否包含在str1
str2长度0~length()-0 1个字符串判断是否包含在str1 *
长度0-length()-1 2个字符串判断是否包含在str1 **
长度0~length()-2 3个字符串判断是否包含在str1 ***
长度0-length()-3 4个字符串判断是否包含在str1 ****
*/
for(int x=0;x<min.length();x++)
{
/*第一个循环是定义一共有多少轮,但不一定执行完全部的轮数才能找到,如果找到下面的return 会返回找到的子串*/
for(int y = 0,z=min.length()-x;z!=min.length()+1;y++,z++)
{
/*第二个循环中的y 是获取str2中的子串都是从0开始的,而z 是用来计算在str2中获取子串的长度,第一轮是7,就是str2的长度减去0(我们可以想象成 str的长度 - 轮数1 - 1 = 7(就是从0到7获取str2的子串),如果是第二轮就是str的长度 - 轮数2 - 1 = 6)(就是从0到6获取str2的子串),而判断条件n < min.length() + 1 是用来获取有多少个子串,比如上面的6,获取了(0到6之后,还有一个是1到7的子串,在执行完一次循坏之后j和n会自加1,在第二次循环的时候j和n就会变成1和7,就能获取长度为6的第二个子串.长度为5,4也是依次计算)*/
String temp = min.substring(y,z);
//sop(temp);
if(max.contains(temp))
{
return temp;
}
}
}
return "";
}
public static void sop(String str)
{
System.out.println(str);
}
}