本帖最后由 taijh999 于 2009-12-28 19:36:56 编辑

解决方案 »

  1.   

    asdf:2 
    rt:2 as:2 这个是什么意思呀,没太理解你的意思。
      

  2.   

    楼主的确说得很简洁呀~~。"asdfrtyrtaseeeasdf"
    按 as sd df fr rt  ...df
    asd sdf frt rty .....sdf
    …………
    …………
    asdf  sdfr dfrt ....asdf 等进行统计 
    asdf:2
    rt:2
    ……
    ……
    as:2 这个是按我自己理解些的,代码没时间整理了,不要笑。import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;public class Test {
    Map<String, Integer> maps = new HashMap<String, Integer>();
    List<String> list = new ArrayList<String>();
    public void stringCount(String string){
    int l = string.length();
    for(int i=2;i<l;i++){
    for(int j = 0;j<l-i+1;j++){
    list.add(string.substring(j,i+j));
    }
    count(list);
    list.clear();
    }
    print(maps);

    }
    public void print(Map<String, Integer> maps){
    Set<String> keys = maps.keySet();
    Iterator<String> it = keys.iterator();
    while(it.hasNext()){
    String key = it.next();
    System.out.println(key + ":" + maps.get(key));
    }
    }
    public void count(List<String> list){
    List<String> newList = new ArrayList<String>();
    Iterator<String> it = list.iterator();
    while(it.hasNext()){
    String temp = (String) it.next();
    if(newList.contains(temp)){
    if(maps.get(temp)==null){
    maps.put(temp, 2);
    } else {
    maps.put(temp,maps.get(temp)+1);
    }
    }else {
    newList.add(temp);
    }
    }
    } public static void main(String[] args) {
    new Test().stringCount("asdfrtyrtaseeeasdf");
    }}
      

  3.   


    import java.util.Set;import org.apache.commons.collections.Bag;
    import org.apache.commons.collections.bag.TreeBag;public class Test { public static void main(String[] args) {
    String str = "asdfrtyrtaseeeasdf";
    Bag bag = new TreeBag();
    for (int i = 1; i <= str.length(); i++) {
    for (int j = 0; j + i <= str.length(); j++) {
    bag.add(str.substring(j, i + j));
    }
    }
    Set<String> set = bag.uniqueSet();
    for (String s : set) {
    System.out.println(s + "\t" + bag.getCount(s));
    }
    }
    }注:使用了apache commons-collections 3.2.1该示例计算结果:
    a 3
    as 3
    asd 2
    asdf 2
    asdfr 1
    asdfrt 1
    asdfrty 1
    asdfrtyr 1
    asdfrtyrt 1
    asdfrtyrta 1
    asdfrtyrtas 1
    asdfrtyrtase 1
    asdfrtyrtasee 1
    asdfrtyrtaseee 1
    asdfrtyrtaseeea 1
    asdfrtyrtaseeeas 1
    asdfrtyrtaseeeasd 1
    asdfrtyrtaseeeasdf 1
    ase 1
    asee 1
    aseee 1
    aseeea 1
    aseeeas 1
    aseeeasd 1
    aseeeasdf 1
    d 2
    df 2
    dfr 1
    dfrt 1
    dfrty 1
    dfrtyr 1
    dfrtyrt 1
    dfrtyrta 1
    dfrtyrtas 1
    dfrtyrtase 1
    dfrtyrtasee 1
    dfrtyrtaseee 1
    dfrtyrtaseeea 1
    dfrtyrtaseeeas 1
    dfrtyrtaseeeasd 1
    dfrtyrtaseeeasdf 1
    e 3
    ea 1
    eas 1
    easd 1
    easdf 1
    ee 2
    eea 1
    eeas 1
    eeasd 1
    eeasdf 1
    eee 1
    eeea 1
    eeeas 1
    eeeasd 1
    eeeasdf 1
    f 2
    fr 1
    frt 1
    frty 1
    frtyr 1
    frtyrt 1
    frtyrta 1
    frtyrtas 1
    frtyrtase 1
    frtyrtasee 1
    frtyrtaseee 1
    frtyrtaseeea 1
    frtyrtaseeeas 1
    frtyrtaseeeasd 1
    frtyrtaseeeasdf 1
    r 2
    rt 2
    rta 1
    rtas 1
    rtase 1
    rtasee 1
    rtaseee 1
    rtaseeea 1
    rtaseeeas 1
    rtaseeeasd 1
    rtaseeeasdf 1
    rty 1
    rtyr 1
    rtyrt 1
    rtyrta 1
    rtyrtas 1
    rtyrtase 1
    rtyrtasee 1
    rtyrtaseee 1
    rtyrtaseeea 1
    rtyrtaseeeas 1
    rtyrtaseeeasd 1
    rtyrtaseeeasdf 1
    s 3
    sd 2
    sdf 2
    sdfr 1
    sdfrt 1
    sdfrty 1
    sdfrtyr 1
    sdfrtyrt 1
    sdfrtyrta 1
    sdfrtyrtas 1
    sdfrtyrtase 1
    sdfrtyrtasee 1
    sdfrtyrtaseee 1
    sdfrtyrtaseeea 1
    sdfrtyrtaseeeas 1
    sdfrtyrtaseeeasd 1
    sdfrtyrtaseeeasdf 1
    se 1
    see 1
    seee 1
    seeea 1
    seeeas 1
    seeeasd 1
    seeeasdf 1
    t 2
    ta 1
    tas 1
    tase 1
    tasee 1
    taseee 1
    taseeea 1
    taseeeas 1
    taseeeasd 1
    taseeeasdf 1
    ty 1
    tyr 1
    tyrt 1
    tyrta 1
    tyrtas 1
    tyrtase 1
    tyrtasee 1
    tyrtaseee 1
    tyrtaseeea 1
    tyrtaseeeas 1
    tyrtaseeeasd 1
    tyrtaseeeasdf 1
    y 1
    yr 1
    yrt 1
    yrta 1
    yrtas 1
    yrtase 1
    yrtasee 1
    yrtaseee 1
    yrtaseeea 1
    yrtaseeeas 1
    yrtaseeeasd 1
    yrtaseeeasdf 1
      

  4.   

    Bag是Java Collection的一个补充。Set是集合,集合里不能有重复元素,Bag是包,一个书包里可以有很多一样的东西,并且能把一样的元素给数出来。
    思路就是把所有子串扔到包里,然后数一下每一类有多少个。