题号链接
49. 字母异位词分组 - 力扣(LeetCode)
1首先定义map集合一个String对应一个String[]集合,遍历字符串数组
2对其先进行拆分,拆分为字符数组,再进行排序,再转为字符串
3如果key值没有就创建一个字符串集合,将遍历的str放入
4如果key值在map中有,那就返回其所对应的values,将遍历的str放入
5最后直接返回map所有的values组成的集合
代码实现:
import java.util.*;class Solution {public List<List<String>> groupAnagrams(String[] strs) {// 1. 定义 Map,键为排序后的字符串,值为字母异位词列表Map<String, List<String>> map = new HashMap<>();// 2. 遍历字符串数组for (String str : strs) {// 3. 将字符串拆分为字符数组,排序后再转为字符串char[] chars = str.toCharArray();Arrays.sort(chars);String sortedKey = new String(chars);// 4. 如果键不存在,创建一个新列表;如果存在,直接获取列表map.computeIfAbsent(sortedKey, k -> new ArrayList<>()).add(str);}// 5. 返回 Map 中所有值组成的集合return new ArrayList<>(map.values());}
}