在笔试和面试中经常会遇到这样的问题,统计字符串中各个字符出现的个数,
对于统计频率一般通常的做法是利用map类数据结构,key作为原始元素的值,value作为频率
这里使用hashmap实现
import java.util.HashMap;
public class CountChar {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]= {1,3,5,1,6,4};
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int a:arr)
{
if(map.containsKey(a))
{
int val=map.get(a);
val++;
map.put(a, val);
}
else
{
map.put(a, 1);
}
}
for(int num:map.keySet())
{
System.out.println(num+":"+map.get(num));
}
}
}
这里具有一些要点,一般遇到统计数字或者字符类的题,如果数字或者字符有个区间范围,例如0-9,A-Z这种,我们还可以使用基础的数组进行实现,根据这个范围开辟数组,用于存放频率,例如对于26个字母就更加方便,直接int arr[26]
这种题使用数组、Arraylist都可以做,但是使用map类数据结构更为方便,省略了一系列的确定元素位置的操作