题目
题目链接
https://leetcode.cn/problems/group-anagrams/?envType=study-plan-v2&envId=top-100-liked
解题思路
关键步骤:建立一个哈希表Hash<String,List<String>> list = new
HashMap<>();第一个String是排序后的字符串,第二个List<String>是储存没有排序的字符串的列表。
$$时间复杂度:O(n)$$
相关代码
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> hash = new HashMap<>();
for(int i=0;i<strs.length;i++){
char a[] = strs[i].toCharArray();
Arrays.sort(a);
String s = new String(a);
if(hash.get(s)==null){
List<String> t = new ArrayList<>();
t.add(strs[i]);
hash.put(s,t);
}
else{
hash.get(s).add(strs[i]);
}
}
List<List<String>> res = new ArrayList<>();
for(String key:hash.keySet()){
res.add(new ArrayList<>(hash.get(key)));
}
return res;
}
}