有个字符串str="dflkasdfkjhsadlkjhskljhjkshdfkj", 求字符串中出现次数最多的字符
实在不知道怎么弄

解决方案 »

  1.   

    如果只有ASCII码    int[] count = new int[128];
        for (int i = str.length(); i-- > 0; count[str.charAt(i)]++);
        int maxIndex = 0;
        for (int i = 1; i < count.length; i++) {
          if (count[i] > count[maxIndex]) {
            maxIndex = i;
          }
        }
        System.out.println((char) maxIndex);
      

  2.   

    用hash表啊,只用遍历一遍就可以搞定了
      

  3.   

    Map,key放字母,value放出现次数
    Bag(commons-collections里的数据结构),放字母,同时里面也有出现次数的信息。
      

  4.   


    我也想到要用hsah表 但是就是不知道怎么遍历,才能得到所要的结果
      

  5.   


            Map<Character, Integer> map = new HashMap<Character, Integer>();
            String str="dflkasdfkjhsadlkjhskljhjkshdfkj";
            for(int i = 0; i < str.length(); i ++)
            {
                char c = str.charAt(i);
                if(!map.containsKey(c))
                    map.put(c, 0);
                else
                    map.put(c, map.get(c) + 1);
            }
            
            Set<Character> set = map.keySet();
            for(Character c : set)
            {
                System.out.println(c + " : " + map.get(c));
            }
    结果:
    f : 2
    d : 3
    s : 3
    a : 1
    l : 2
    j : 4
    k : 5
    h : 3
      

  6.   

       String str="dflkasdfkjhsadlkjhskljhjkshdfkj";
       char[] chars = str.toCharArray();
       Arrays.sort(chars);
       int max = 0;
       int count = 0;
       char maxchar = 0;
       char oldchar = 0 ;
       for(int i = 0 ;i <= chars.length;i++){
      
       if(i == 0 || i == chars.length || oldchar != chars[i]  ){
        max = max > count?max:count;
        maxchar = max > count?maxchar:oldchar;
        if(i == chars.length){
         break;
        }
        oldchar = chars[i];
        count = 0;
     }
       count++;
       
       }
       System.out.println(maxchar+":"+max);
       这个似乎很多人问过了 刚写了个代码 
      

  7.   


            Map<Character, Integer> map = new HashMap<Character, Integer>();
            String str="dflkasdfkjhsadlkjhskljhjkshdfkj";
            for(int i = 0; i < str.length(); i ++)
            {
                char c = str.charAt(i);
                if(!map.containsKey(c))
                    map.put(c, 1);//这个地方刚才写错了,应该是1
                else
                    map.put(c, map.get(c) + 1);
            }
            
            Set<Character> set = map.keySet();
            for(Character c : set)
            {
                System.out.println(c + " : " + map.get(c));
            }
    结果:
    f : 3
    d : 4
    s : 4
    a : 2
    l : 3
    j : 5
    k : 6
    h : 4
      

  8.   


         map.put(c,0);else  这句有错。改成
         map.put(c,1);else