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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?