可以使用HashMap存储,对该字符串进行遍历。如果遍历的字符在Map中,则将Map中的数值取出来加1。如果没有则放进去。

解决方案 »

  1.   

    楼上说的不错,你自己看看API把它搞定吧,不难的.
      

  2.   

    全是abcd之类的吗?
    那不就26个字母么,遍历对比下就OK了啊。
      

  3.   


    import java.util.*;
    import java.util.Collections;public class  LetterCount
    {
    public void getLetterCount(String str)
    {
    ArrayList<String> lists = new ArrayList<String>();
                    HashSet<String> hset = new HashSet<String>();
    char[] ss = str.toCharArray();
    for(int i=0; i<ss.length; i++)
    {
    lists.add(String.valueOf(ss[i]));
    hset.add(String.valueOf(ss[i]));
    }
    System.out.println("共有字母"+hset.size()+"个!"); Collections.sort(lists);
    Iterator it = hset.iterator();
    while(it.hasNext())
    {
    String os = (String)it.next();
                            int begin = lists.indexOf(os);
                            int last = lists.lastIndexOf(os);
    int count = last-begin+1;
    System.out.println("字母"+os+": 共"+count+"个");
    }
    } public static void main(String[] args) 
    {
    LetterCount lc = new LetterCount();
    lc.getLetterCount(args[0]);
    }
    }
    我的运行结果:
    D:\backup\myclass>java LetterCount yekmaakkccekymbvb
    共有字母8个!
    字母k: 共4个
    字母m: 共2个
    字母a: 共2个
    字母c: 共2个
    字母y: 共2个
    字母b: 共2个
    字母v: 共1个
    字母e: 共2个解决后,请结贴!
      

  4.   

    public class LetterCount
    {
    public static void main(String[] args)
    {
    HashMap<String, Integer> map = new HashMap();
    String str = args[0];
    for (int i = 0; i < str.length(); i++) {
    char ch = str.charAt(i);
    String key = ch + "";
    Integer count = map.get(ch + "");
    map.put(key, map.get(key) == null ? 1 : ++count);
    }
    Set<String> set = map.keySet();
    System.out.println("共有字母"+map.size()+"个");
    for (String key : set) {
    System.out.println("字母" + key + ":共" + map.get(key) + "个");
    } }
    }
      

  5.   

    这道题目应该不只是考运算吧,我觉得是考效率的。如果按照楼上的办法,用map,效率应该是n*n。
    如果是我做,我想到的方法是,把a-Z作为26+26=52的数组a=[0,0,0,0,0,0,0,0,0,0,0...]
    然后遍历字符串,对于每个数都减去a得到ASCII值,对应相加,例如:
    a[c-a]=a[2]+1=1
    所以:a=[0,0,1,0,0,0...],遍历字符串可以得到个数。
    再取出就好了。
    时间复杂度为n而已,快了一倍,呵呵!~不知道有没有更好的办法呢?
      

  6.   

    package com.string;import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Set;public class StringL {

    private HashMap<String,Integer> hashMap = new HashMap<String,Integer>();

    public void getString(String s){

    String str ;

    for(int i=0;i<s.length();i++){

    str = s.substring(i,i+1);
    if(hashMap.containsKey(str)){
    int j=hashMap.get(str);
    hashMap.remove(str);
    hashMap.put(str, j+1);
    }else{
    hashMap.put(str, 1);

    }


    }
    }

    public void getHashMap(){

    Set<String> strings = hashMap.keySet();

    Iterator<String> it = strings.iterator();

    for(String ss:strings){
    ss = it.next();
    System.out.println(ss+":"+hashMap.get(ss));
    }

    } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    StringL  sl =new StringL();
    sl.getString("yekmaakkccekymbvb");
    sl.getHashMap();
    }}
      

  7.   

    string str = "89kds7f8sdfsjdfklds8f7sd7ufjsdf";
    while (str.Length > 0)
    {                
        System.out.println(string.Format("{0}:{1}个",str[0],str.Length-str.Replace(str[0].ToString(),"").Length));
        str = str.Replace(str[0].ToString(), "");
    }
      

  8.   

    lz可以把所有能运行的方法都收藏...
    public class NetWork1 {
    public static void main(String[] args) {
    while(true){
    System.out.println("请输入你的字符串:");
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
    try {
    String str=reader.readLine();
    count(str);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    } public static void count(String str) {
    Map<Character ,Integer> m=new TreeMap<Character,Integer>();
    char[] chars = str.toCharArray();
    for (char c : chars) {
    Integer num=m.get(c);
    num=(num==null)?num=1:++num;
    m.put(c, num);
    }
    System.out.println("字符的种类:"+m.size());
    Set<Character> set=m.keySet();
    for(Character ch:set){
    System.out.println("字符"+ch+"有"+m.get(ch)+"个");
    }
    }}
      

  9.   

    public void houner(){
        String str="yekmaakkccekymbvb";
        char[] ch=str.toCharArray();
        Map map=new HashMap();
        for(int i=0;i<ch.length;i++){
         map.put(ch[i],(Integer)map.get(ch[i])==null?a:(Integer)map.get(ch[i])+1);
        }
        System.out.println(map);
    }
      

  10.   


        public static void main(String[] agrs){
         String str="asrwofalsfjaowieurnasdfhadhiof";
         while(!"".equals(str)){
         String c=str.substring(0,1);
         String tempStr=str.replace(c,"");
         System.out.println(c+" : "+(str.length()-tempStr.length()));
         str=tempStr;
         }
        
        }
    我也贴一份,处理问题优雅一点。
      

  11.   


    public class CountString { public static void main(String[] args) {
    String str = "yekmaakkccekymbvb";
    char[] arr = str.toCharArray();
    int []c = new int[26];

    for(int i = 0 ; i < arr.length ;i ++){
    ++ c[(int)arr[i] - 'a'];
    }
    int j = 0;
    for(int i = 0 ;i < c.length ; i ++){
    if(c[i] > 0){
    System.out.print((char)(i + 'a'));
    System.out.print(" ");
    System.out.println(c[i]);
    j ++;
    }
    }
    System.out.println("此字符串共包含" + j + "个字符。");
    }}