u010442664 2014-02-14 16:55 采纳率: 0%
浏览 2371

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

/*

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

  • 思路:

  • 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条回答

  • 热心市民杜 2014-02-19 00:42
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置