leetcode1002查找常用字符(Java)(hashmap)

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;
    }
}
  1. 让hashmap中存的键值对对应于key和key出现的次数(重要):map.put(c,map.getOrDefault(c,0)+1);
  2. 创建单个字符的键值对:Map<Character,Integer> map=new HashMap<>();
  3. map.containsKey(c)——查找是否有关键值为num的映射,存在返回true(已学过)
  4. map.get(c)获取key为c的对应的value(已学过)
  5. 让key对应的出现次数减一:map.put(c,map.get(c)-1);
  6. 向链表中加入“%c”:res.add(""+c);(字符处理)
  7. String转成字符数组:A[0].toCharArray()(已学过)
  8. 查找string某个字符:A[i].charAt(j)(已学过)
  9. 返回map中key的数组集合:map.keySet()

相关文章:

  • 2021-09-11
  • 2021-12-13
  • 2021-04-11
  • 2022-12-23
  • 2021-12-12
  • 2021-09-17
  • 2022-12-23
  • 2021-08-01
猜你喜欢
  • 2021-09-08
  • 2021-10-12
  • 2021-11-30
  • 2022-02-06
  • 2022-12-23
  • 2021-11-20
相关资源
相似解决方案