49. 字母异位词分组 - LeetCode

49. 字母异位词分组

题目链接

HashMap

  • 使用一个HashMap来存储分组,键是内部排序后的字符串,值是键的字母异位词组成的List
  • 对一个字符串,先转换为char数组进行排序,再在HashMap中查找,若找到则加入List,未找到就创建新的List加入HashMap中
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> words = new HashMap<>();
        for(String s : strs){
            char[] charArray = s.toCharArray();
            Arrays.sort(charArray);
            String sortedStr = String.valueOf(charArray);
            if(words.containsKey(sortedStr)){
                List<String> list = words.get(sortedStr);
                list.add(s);
            } else {
                List list = new ArrayList<String>();
                list.add(s);
                words.put(sortedStr, list);
            }
        }
        return new ArrayList<List<String>>(words.values());
    }
}
posted @ 2021-03-07 13:19  一天到晚睡觉的鱼  阅读(35)  评论(0)    收藏  举报