原题为:
题目的意思是指给定指定的字母数组,然后找到字母异位词 即字母的组成一样,但是排序方式不同的字母。
思路:由于字母的组成一样是关键。我们可以利用Map集合的特性,把字母的组合当作key,把符合条件的单词当做value,并放在List集合中。然后遍历每个单词,根据结果进行单词的添加
源码:
public class NO1 {
public static void main(String[] args) {
}
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> map = new HashMap<>();
for(int i = 0;i<strs.length;i++){
char[] chars = strs[i].toCharArray();
Arrays.sort(chars);
String key = new String(chars);
List<String> list = map.get(key);
if(list!=null){
list.add(strs[i]);
map.put(key,list);
}else {
List<String> list1 = new ArrayList<>();
list1.add(strs[i]);
map.put(key,list1);
}
}
return new ArrayList<>(map.values());
}
}