str a="abcdefg"
str b="babcefg"
两字符串相同的字符串有"a""b"c"e"f"g" "ab" "bc" "ef""fg"
如何用JAVA写程序求出两字符串中所有相同的字符串

解决方案 »

  1.   

    /**
     * 
     */
    package test;import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.TreeMap;
    import java.util.Map.Entry;/**
     * @author Daniel Cao
     * @date 2007-8-9
     * @time 上午11:23:22
     * 
     */
    public class StringPattern {
    /**
     * *
     * 
     * @param args
     */
    public static void main(String[] args) {
    getMaxPattern("abcdefg", "babcefg");
    } public static void getMaxPattern(String strA, String strB) {
    // 只要有一个null,就返回null
    if (strA == null || strB == null || strA.trim().equals("")
    || strB.trim().equals("")) {
    System.out.println("");
    return;
    }
    int lengthA = strA.length();
    int lengthB = strB.length();
    String longStr = lengthA > lengthB ? strA : strB;
    String shortStr = lengthA > lengthB ? strB : strA;
    Map<Integer, List<String>> maxSubstrList = new TreeMap<Integer, List<String>>();
    for (int length = shortStr.length(); length >= 0; length--) {
    for (int startIndex = 0; startIndex <= shortStr.length() - length; startIndex++) {
    String substr = shortStr.substring(startIndex, startIndex
    + length);
    if (longStr.indexOf(substr) > -1) {
    int len = substr.length();
    List<String> list;
    if (maxSubstrList.containsKey(len)) {
    list = (List<String>) maxSubstrList.get(len);
    } else {
    list = new ArrayList<String>();
    }
    if (!list.contains(substr)) {
    list.add(substr);
    }
    maxSubstrList.put(len, list);
    }
    }
    }
    // 找到最大匹配子串
    if (maxSubstrList.size() == 0) {
    return;
    } else {
    Iterator<Entry<Integer, List<String>>> it = maxSubstrList
    .entrySet().iterator();
    Entry<Integer, List<String>> entry = it.next();
    while (it.hasNext()) {
    entry = it.next();
    List<String> maxList = entry.getValue();
    for (String str : maxList) {
    System.out.println(str);
    }
    }
    }
    }
    }输出结果:
    a
    b
    c
    e
    f
    g
    ab
    bc
    ef
    fg
    abc
    efg这是我在 求最大子串 的程序上稍微改了点代码得到的 求所有相同子串的程序~
      

  2.   

    我写了一个简单的,不知道LZ要的是不是这种效果
    public class String1 {
    public void equealString(){
    String a = "abcdefg";
    String b = "babcefg";

    for(int i = 0;i < b.length()+1;i ++){
    for(int  j = i+1;j < b.length()+1;j ++){
    String str;
    str = b.substring(i, j);
    if(a.indexOf(str) != -1){
    System.out.println(str);
    }
    }
    }
    }
    public static void main(String avg[]){
    String1 str = new String1();
    str.equealString();
    }
    }