题意:给定一个字符串数组,把所有同素异形体的字符串分到一起
思路:
- 遍历每一个字符串,把它转换为char array,然后排序
- 把排序后的char array转换成hashmap的key
- 如果key存在hashmap中,把该字符串加入到key对应的value list
- 如果不存在,创建一个新的entry
- 最后把map转换成list
思想:字符串
复杂度:时间O(n2),空间O(n)
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String, List<String>> map = new HashMap();
for(String str: strs) {
char[] temp = str.toCharArray();
Arrays.sort(temp);
String key = new String(temp);
if(map.containsKey(key)){
map.get(key).add(str);
} else {
map.put(key, new ArrayList<String>());
map.get(key).add(str);
}
}
List<List<String>> res = new ArrayList();
for(List<String> list: map.values()) {
res.add(list);
}
return res;
}
}