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 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路