问:String a="A B C D A C",要求输出不重复的字母出现的次数,比如:A 2次,B 1次,C 2次,D 1次。用hashmap实现
结果格式有点不对自己改下
public final static void main(String[] arg){
String s="A B C D A C";
String[] arr=s.split(" ");
HashMap<String, Integer> map=new HashMap<String,Integer>();
for (int i = 0; i < arr.length; i++) {
if(map.containsKey(arr[i])){
map.put(arr[i], map.get(arr[i])+1);
}else
map.put(arr[i], 1);
}
System.out.println(map.toString());
}
String[] data = a.split(" ");
HashMap<String, int> hm = new HashMap<String, int>();
for (int i = 0; i < data.size; i++)
{
if (!hm.containsKey(data[i]))
hm.Add(data[i], 1);
else
hm[data[i]]++;
}
手写的,大概这个思路,函数调用不一定对,自己修改下
hashmap每个记录带一个key,一个value,
读入一个字母,将字母设成key,在hashmap中查找,
已经存在的话,将value加1,
不存在,将value设成1,加入hashmap。
public static Map<Character,Integer> countFreLetter(String a){
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(int i = 0; i < a.length(); i ++){
char c = a.charAt(i);
if(Character.isLetter(c)){
if(map.containsKey(c)){
map.put(c,map.get(c) + 1);
}else{
map.put(c,1);
}
}
}
return map;
}
循环判断,基本的实现方式是这样,但感觉应该有更优化的方法