Leecode no.49 字母异位词分组

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) {

}


}
posted @ 2021-12-16 16:06  六小扛把子  阅读(27)  评论(0编辑  收藏  举报