/*
获取两个字符串中最大相同子串。
思路:
1,先判断两个字符串谁的长度大
2,判断较小的字符串是否为较长字符串的子串,如果是就返回较短的字符串
-
3,将较小字符串,按照 正向 和 反向 和 两边同时递减 3种方式依次递减掉1个字符,分别与较长字符串比较,
返回相同字符串长度最长的字符串并打印,如果出现相同长度的匹配字符子串,就以最大长度为参照,将符合
度的字符串全部打印。
*/
public class StringTest4
{public static void main(String[] args)
{
// TODO Auto-generated method stub
String s1 = "abcchellonvnbbbbbb...k";
String s2 = "hfkdsajlsahello,jkljlkbbbbb";
String s3 = "aaa";
String s4 = "bbb";
sop(getMaxString(s1, s2));
sop(getMaxString(s3, s4));
}public static void sop(String s)
{
System.out.println(s);
}public static String getMaxString(String s1, String s2)
{
String max;
String min;max = (s1.length() > s2.length()) ? s1 : s2;
min = (max == s1) ? s2 : s1;
sop("较长字符串为:"+max + "较短字符串为:" + min);
for (int x = 0; x < min.length(); x++)
{
for (int y = 0, z = min.length() - x; z != min.length() + 1; y++, z++)
{
String temp = min.substring(y, z);if (max.contains(temp))
{
return temp;
}}
}return "无匹配字符";
}
}
-------------------打印结果---------------------------
较长字符串为:hfkdsajlsahello,jkljlkbbbbb较短字符串为:abcchellonvnbbbbbb...k
hello
较长字符串为:bbb较短字符串为:aaa
无匹配字符
-------------ps------------------
在s1和s2中有两个字符串符合最大相同的子串,但是比较后得到第一个子串"hello"方法就会结束了,怎么做到一起打印输出? 如果提供的数据有更多的最大相同子串呢?应该怎么修改程序才能把所有匹配条件的子串都输出?