使用数组的每个字母的计数

时间:2011-12-11 02:43:15

标签: java

我有一个字符串作为输入,例如。 Testerty。我想找到字符串中每个字母的计数。我尝试过使用HashMap。但是我想用数组来实现它。 能否请你提出一些建议。

5 个答案:

答案 0 :(得分:2)

您可以使用ASCII来指定字母数字值: enter image description here

int[] letters = new int[128]; // There are 128 different possible characters.

for(int i = 0; i < input.length; i++) {
    char current = input.charAt(i);
    int index = Character.getNumericValue(char);
    letters[index]++;
}

答案 1 :(得分:1)

使用Map更容易,其中字母是键,值是计数。使用数组更棘手;您可以为每个字母分配一个数字,并将该数字用作数组的索引,并将计数存储在数组中。所以'A'是1,'B'是2等等......算法是

  1. 获取下一个字母串。
  2. 获取该信的索引。
  3. 将数组中该索引处的值增加1。
  4. 当然你需要做空检查等等。

    请注意,这在逻辑上是Map。就在您使用地图时,地图会为您执行上面的第2步。

答案 2 :(得分:1)

ArrayList<Character> ch = new ArrayList<Character>();
ArrayList<Integer> count = new ArrayList<Integer>();

someMethod(String input) {
  for(char c : input.toCharArray()) {
    if(ch.indexOf(c) != -1) {
      i.set(ch.indexOf(c), i.get(ch.indexOf(c))+1);
    } else {
      ch.add(c);
      i.add(1);
    }
  }
}

答案 3 :(得分:1)

您应该使用实现Multiset iunterface的集合,即HashMultiset(均来自Google Guava库)。 Multiset旨在保存集合中对象的计数:

Multiset<String> m = HashMultiset.create(Arrays.asList("a", "a", "b", "c", "b", "a"));
// m.toString() prints "a x 3, b x 2, c x 1"
// m.count() gives 6

答案 4 :(得分:1)

一种方法是,首先创建一个数组,然后使用charAt(index)方法遍历字符串,将当前字符与数组中的字符串匹配。如果找到匹配项,则在那里增加值,或者将其添加为数组中的新条目。