A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

急!急!急!

8 个回复

倒序浏览
把小串逐一递减,看是否被大串包含
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
写了一下,不知道有没有简便方法

package com.itheima.check;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.TreeSet;

public class Demo {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入第一个字符串:");
                String s1 = sc.nextLine();
                System.out.println("请输入第二个字符串:");
                String s2 = sc.nextLine();
               
                getMaxSubstring(s1,s2);
               
        }

        public static void getMaxSubstring(String s1,String s2) {
                ArrayList<String> list = new ArrayList<String>();
                for (int i = 0; i < s1.length(); i++) {
                        for (int j = i + 1; j <= s1.length(); j++) {
                                if (s2.indexOf(s1.substring(i,j)) != -1) {
                                        list.add(s1.substring(i,j));
                                }
                        }
                }
               
                TreeSet<String> set = new TreeSet<String>();
                if(list.size() == 0) {
                        System.out.println(s1 + "和" + s2 + "没有相同的子字符串");
                        return;
                }else {
                        String max = list.get(0);
                        for (String s : list) {
                                if (s.length() > max.length()) {
                                        max = s;
                                }
                        }
                        set.add(max);
                       
                        for (String s : list) {
                                if (s.length() == max.length()) {
                                        set.add(s);
                                }
                        }
                }
               
                System.out.println(s1 + "和" + s2 + "的最大相同子字符串如下:");
                for (String s : set) {
                        System.out.print(s + "  ");
                }
        }
}
回复 使用道具 举报
TreeSet集合下面第二个for循环没看明白,上面已经是最大相同子字符串了,
回复 使用道具 举报
1判断哪个串小,2取小串的所有子串用set装后拿到不重复子串集。3,创一个list集,然后拿S ET集的每一个元素在大串中比较看是否包含,contains返true装在list集。4,遍历lit集,比较每个元素长度,取得最长的
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
是不是好复杂。。。。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
亮仔开发 发表于 2017-3-23 23:05
TreeSet集合下面第二个for循环没看明白,上面已经是最大相同子字符串了,

可能有几个长度一样的最大子字符串
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
是这样吗。。。。。。。
回复 使用道具 举报
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马