题目:
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
解析:
我们采用哈希表的思路。
首先思考:
所以思路为:
代码:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> ans = new HashMap<String, List<String>>();
//内部进行排序的各个单词为key,以字符串向量List<String>为value,存储各个字符数量相同的字符串
List<List<String>> result=new ArrayList<>(); //存储最终的结果
for(int i=0;i<strs.length;i++){ //遍历各个单词
String str1=strs[i];
char[] array = str1.toCharArray(); //排序
Arrays.sort(array);
String str = new String(array);
if(ans.get(str)==null){ //在哈希表中无法找到str
List<String> temp = new ArrayList<>();
ans.put(str,temp); //以排序后的strs[i]作为key
}
ans.get(str).add(strs[i]); //在对应的字符串向量中push结果。
}
for (String i : ans.keySet()) { //遍历哈希表,添加入result
result.add(ans.get(i));
}
return result;
}
}