-2

最近、文字列内に文字が見つかるかどうかを調べる問題を行いました。Java を使用して文字列内のすべての文字の出現をカウントし、アルファベット順に出力する方法を知りたいと思っていました。たとえば、文字列が「アラバマ」の場合、関数は「a:4、b:1、l:1、m:1」を返します。

4

2 に答える 2

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) に制限されている場合は、代わりに配列に格納する方が効率的です (コードの考え方は同じです)。

于 2013-02-21T19:40:01.283 に答える
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);
于 2013-02-21T20:24:16.420 に答える