原题
https://leetcode-cn.com/problems/group-anagrams/

思路
哈希表,java自然而然的想到用map,关键是key如何设计,对于每一个字符串进行排序【重点】
解题
package com.leetcode.code;
import java.util.*;
/**
* @ClassName Code49
* @Author ZK
* @Description
* @Date 2021/1/29 15:14
* @Version 1.0
**/
public class Code49 {
public static void main(String[] args) {
// 第一次设计key的时候,用排序后得到的数字,结果如下这个测试用例发生了报错
String[] strs = {"ray","cod","abe","ned","arc","jar","owl","pop","paw","sky","yup","fed","jul","woo","ado","why","ben","mys","den","dem","fat","you","eon","sui","oct","asp","ago","lea","sow","hus","fee","yup","eve","red","flo","ids","tic","pup","hag","ito","zoo"};
List<List<String>> lists = groupAnagrams(strs);
for (List<String> list : lists) {
System.out.println(list);
}
}
public static List<List<String>> groupAnagrams(String[] strs) {
int len = strs.length;
Map<String, List<String>> map = new HashMap<>();
for (String str : strs) {
String key = sort(str);
if (map.containsKey(key)) {
map.get(key).add(str);
} else {
List<String> list = new ArrayList<>();
list.add(str);
map.put(key, list);
}
}
return new ArrayList<>(map.values());
}
// 对一个字符串进行排序,bedac -> abcde
public static String sort(String str){
char[] array = str.toCharArray();
Arrays.sort(array);
return new String(array);
}
}
该博客详细介绍了如何利用Java实现LeetCode第49题的解决方案,通过将字符串排序并作为哈希表的键来分组字母异位词。文中提供了一个具体的例子,包括输入和输出,展示了如何处理包含多个字母异位词的字符串数组。
1169

被折叠的 条评论
为什么被折叠?



