
class Solution {
public List<String> commonChars(String[] A) {
Map<Character,Integer> map=new HashMap<>();
for(char c:A[0].toCharArray()){
map.put(c,map.getOrDefault(c,0)+1);
}
for(int i=1;i<A.length;i++){
Map<Character,Integer> tmp=new HashMap<>();
for(int j=0;j<A[i].length();j++){
char c=A[i].charAt(j);
if(map.containsKey(c) && map.get(c)>0){
tmp.put(c,tmp.getOrDefault(c,0)+1);
map.put(c,map.get(c)-1);
}
}
map=tmp;
if(map.size()==0)break;
}
List<String> res=new ArrayList<>();
for(Character c:map.keySet()){
for(int k=0;k<map.get(c);k++){
res.add(""+c);
}
}
return res;
}
}
- 让hashmap中存的键值对对应于key和key出现的次数(重要):map.put(c,map.getOrDefault(c,0)+1);
- 创建单个字符的键值对:Map<Character,Integer> map=new HashMap<>();
- map.containsKey(c)——查找是否有关键值为num的映射,存在返回true(已学过)
- map.get(c)获取key为c的对应的value(已学过)
- 让key对应的出现次数减一:map.put(c,map.get(c)-1);
- 向链表中加入“%c”:res.add(""+c);(字符处理)
- String转成字符数组:A[0].toCharArray()(已学过)
- 查找string某个字符:A[i].charAt(j)(已学过)
- 返回map中key的数组集合:map.keySet()