我有一个字符串作为输入,例如。 Testerty。我想找到字符串中每个字母的计数。我尝试过使用HashMap。但是我想用数组来实现它。 能否请你提出一些建议。
答案 0 :(得分:2)
您可以使用ASCII来指定字母数字值:
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等等......算法是
当然你需要做空检查等等。
请注意,这在逻辑上是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)方法遍历字符串,将当前字符与数组中的字符串匹配。如果找到匹配项,则在那里增加值,或者将其添加为数组中的新条目。