題號鏈接
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());}
}