難 好好看看
1 class Solution { 2 public List<List<String>> groupAnagrams(String[] strs) { 3 if (strs == null || strs.length == 0) 4 return new ArrayList<>(); 5 //map中key儲存的是字串中字母排序後新的字串 6 Map<String, List<String>> map = new HashMap<>(); 7 for (int i = 0; i < strs.length; i++) { 8 //取出字串,然後把它轉化為字元陣列 9 char[] c = strs[i].toCharArray(); 10 //對字元陣列進行排序 11 Arrays.sort(c); 12 //排序之後再把它轉化為一個字串 13 String keyStr = String.valueOf(c); 14 //判斷map中有沒有這個字串,如果沒有這個字串, 15 //說明還沒有出現和這個字串一樣的字母異位詞, 16 //要新建一個list,把它存放到map中 17 if (!map.containsKey(keyStr)) 18 map.put(keyStr, new ArrayList<>()); 19 //把字串存放到對應的list中 20 map.get(keyStr).add(strs[i]); 21 } 22 //最後返回 23 return new ArrayList<>(map.values()); 24 } 25 }