给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
思路:
字母异位词排好序之后一定都一样,将其作为key,对应的字符串放到集合里再存入到map的value里,map在添加元素之前先判断是否存在该key,如果不存在,v放入空集合,如果存在,先根据key获得对应的v的集合后,再将字符串添加到集合中
代码:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String,List<String>> map=new HashMap<>();
for(String s:strs){
char[] chars=s.toCharArray();
Arrays.sort(chars);//字符串转为数组排序
String key=String.valueOf(chars);//再次转为字符串作为key
if(!map.containsKey(key)) map.put(key,new ArrayList<>());//不存在key存入空集合
map.get(key).add(s);//存在key则获得v集合将字符串添加进去
}
return new ArrayList(map.values());//返回所有的map的v集合
}
}
String.valueOf()
new ArrayList(map.values())