长为10000的字符串,由a-z及A-Z组成,统计出其中出现频率最高的字母 求解 最好用java 谢谢

解决方案 »

  1.   

    小弟不才只能用 简单而且笨重的方法结局希望可以帮到你
    String take="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";//事先定义从a~z,A~Z的字符串变量
    String str="";//你输入的字符串变量
    String get="";
    int show=0'//输出次数用的
    for (int i = 0; i <take.length(); i++) {
    get=take.substring(i, i+1);
    for (int j = 0; j < str.length(); j++) {

    if(str.substring(j, j+1).equals(get)){
    show++;
    }
    }
    System.out.println(get+"的出现次数是"+show);
    show=0;
    }
    因为本人也是菜鸟一个,所以想法不出别的方法。只能每次用a~Z其中的一个 去跟你输入的字符串每一个进行比较,然后对每个字母的出现率分别进行求和。
    接下来看你自己了
      

  2.   


    String str="abcaccbba";
    Set<Character> set=new HashSet<Character>(); 
    Map<Character, Integer> map=new HashMap<Character, Integer>();
    int length=str.length(),max=0;
    for(int i=0;i<length;i++){
    set.add(str.charAt(i));
    }
    System.out.println(set);
    for(char c:set){
    int tmp=0;
    for(int i=0;i<length;i++){
    if(str.charAt(i)==c){
    tmp++;
    }
    }
    if(tmp>=max){
    max=tmp;
    tmp=0;
    map.put(c, max);
    }
    }
    System.out.println(map);
                    System.out.println(max);仅供参考,我只是打印了map,没有去遍历,你可以遍历一下map就可以了,这样就可以把出现频率最高的字母打印出来
      

  3.   


            String str="你需要的字符串";
        String moreChar=null;
        int moreNum=0;
        while(!"".equals(str)){
            String c=str.substring(0,1);
            String tempStr=str.replace(c,"");
            int charNum=str.length()-tempStr.length();
            if(moreNum<charNum){
             moreNum=charNum;
             moreChar=c;
            }
            str=tempStr;
        }
        System.out.println(moreChar+" : "+moreNum);