使用java计算字符串中字母的出现次数

时间:2013-02-21 19:34:23

标签: java

最近我遇到了一个问题,我发现是否可以在字符串中找到一个字符。我想知道如何使用Java来计算字符串中每个字母的出现次数,然后按字母顺序打印?例如,如果字符串是“alabama”,那么函数将返回“a:4,b:1,l:1,m:1”

2 个答案:

答案 0 :(得分:2)

类似的东西:

TreeMap<Character, Integer> map = new TreeMap<Character, Integer>();

for (char c: str.toCharArray())
{
  Integer i = map.get(c);
  if (i == null)
    i = 0;
  map.put(c, i+1);
}
System.out.println(map);

如果数字被限制为'a'到'z'或ASCII范围(0-255),那么将它存储在数组中会更有效(代码有相同的想法)。

答案 1 :(得分:0)

另一个使用地图的例子。

String myString = "alabama";        
NavigableMap<Character, Integer> myMap = new TreeMap<Character, Integer>();
for(char c : myString.toCharArray()) {
    if(myMap.get(c)==null){
        myMap.put(c, 1);
    }else {
        myMap.put(c, myMap.get(c)+1);
    }           
}       
for (Map.Entry<Character, Integer> entry : myMap.entrySet()) {
    System.out.print(entry.getKey() + ":" + entry.getValue() );
    if(!myMap.lastKey().equals(entry.getKey())){
        System.out.print(", ");
    }
}

...或

<强>更新

String str = "alabama";     
Map<Character, Integer> auxMap = new TreeMap<Character, Integer>();
    for(char c : str.toCharArray()) {
        if(auxMap.get(c)==null){
            auxMap.put(c, 1);
        }else {
            auxMap.put(c, auxMap.get(c)+1);
        }           
    }   
    System.out.println(auxMap);