2 u010442664 u010442664 于 2014.02.15 00:55 提问

下面代码,如果有多个最大相同子串该怎么全部打印出来??

/*

  • 获取两个字符串中最大相同子串。

  • 思路:

  • 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"方法就会结束了,怎么做到一起打印输出? 如果提供的数据有更多的最大相同子串呢?应该怎么修改程序才能把所有匹配条件的子串都输出?

1个回答

qq497966910
qq497966910   2014.02.19 08:42

max..contains(min);判断min字符串在max中是否存在。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!