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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭敏 黑马帝   /  2011-9-21 17:34  /  1870 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[img]file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/304085565/QQ/WinTemp/RichOle/6QQB38UTJKM[8E$SU~I($P5.jpg[/img]

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-9-22 07:40:00
沙发
String str1="abcdefg";
String str2="deg";
然后对比长度较小的字符串进行排列组合,并存进数组中。
然后拿数组中的每一个元素去匹配str1(比较长的字符串),没匹配一个用一个map存入数组元素(key)和出现次数(value),这样就ok了,

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-22 10:56:56
藤椅
楼主,我给你 写了一个,不知道你能不能用,你试试吧
import java.util.HashMap;
import java.util.Map;

public class test4 {
        public static void main(String[] args) {
                String str1 = "abcdefg";//较长的串
                String str2 = "acdec";//较短的串
                Map<String, Integer> map = new HashMap<String, Integer>();
                for (int i = 0; i < str2.length(); i++) {
                        for (int j = i + 1; j <= str2.length(); j++) {
                                String key = str2.substring(i, j);
                                System.out.println(key);
                                if (str1.contains(key)) {
                                        if (map.containsKey(key)) {
                                                System.out.println(key);
                                                map.put(key, map.get(key) + 1);
                                        } else {
                                                System.out.println(key);
                                                map.put(key, 1);
                                        }
                                }

                        }
                }

                System.out.println("------------------");
                int maxValue = 0;
                String maxKey = "";
                for (Map.Entry<String, Integer> m : map.entrySet()) {
                        System.out.println("map中key:" + m.getKey() + " value:"
                                        + m.getValue());
                        if (m.getKey().length()> maxKey.length()) {
                                maxValue = m.getValue();
                                maxKey = m.getKey();
                        }
                }
                System.out.println("0000000000000000000");
                System.out.println("最大的重复子串为:"+maxKey+" 出现次数为:"+maxValue);
        }
}

评分

参与人数 1技术分 +2 收起 理由
admin + 2 辛苦啦!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-22 19:23:49
板凳
手机党表示看不到图片!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马