【LeetCode100】--- 2.字母异位词分组【复习回顾】
题目传送门
解法一:哈希表(排序) (HashMap)
利用hashmap的 key value形式存储结构。
key存“源生词”
value存储“派生词组”
最终返回map.values();就行了
class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map = new HashMap<>();for(String str : strs){char[] array = str.toCharArray();Arrays.sort(array);String key = new String(array);List<String> list = map.getOrDefault(key,new ArrayList<String>());list.add(str);map.put(key,list);}return new ArrayList<>(map.values());}
}
复杂度分析
时间复杂度:O(n)遍历一次字符串数组,n为数组长度
空间复杂度:O(n),n为数组长度,最坏情况下每个原生词都只对应一个异位词