package leecode;
import java.util.*;
/**
* 49. 字母异位词分组
*
* 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
*
* 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
*
* @author Tang
* @date 2021/12/16
*/
public class GroupAnagrams {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
//按字母排序
for (String str : strs) {
String sort = sort(str);
List<String> list = map.getOrDefault(sort, new ArrayList<>());
list.add(str);
map.put(sort, list);
}
//排序后字符串加入到
List<List<String>> resultList = new ArrayList<>();
for (String key : map.keySet()) {
resultList.add(map.get(key));
}
return resultList;
}
/**
* ask码排序
*
* @param str 返回排序后的字符串
* @return
*/
private String sort(String str) {
char[] chars = str.toCharArray();
//冒泡排序 从大到小
for(int i = 0; i < chars.length; i++) {
char max = chars[i];
for(int j = i; j < chars.length; j++) {
if(max < chars[j]) {
chars[i] = chars[j];
chars[j] = max;
max = chars[i];
}
}
}
return Arrays.toString(chars);
}
public static void main(String[] args) {
}
}