49. 字母异位词分组
解题思路
本题没有啥通用的套路,只能直接去想咋做了。
因为异位词排序后是一样的,所以只需要维护一个map,key为排序后的字符串,val为一个list集合,其中包含着原本的字符串。具体分析如下
代码
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<String, List<String>>();
for (String str : strs) {
char[] array = str.toCharArray();
Arrays.sort(array);
String key = new String(array);
//还没出现过就要新建一个list来保存异位词
if(!map.containsKey(key)){
map.put(key,new ArrayList<String>());
}
//把原本的字符串存放到对应的list中
map.get(key).add(str);
}
return new ArrayList<List<String>>(map.values());
}
}