1. 程式人生 > 其它 >【LeetCode】每日一題49. 字母異位詞分組

【LeetCode】每日一題49. 字母異位詞分組

技術標籤:每日一題leetcodehashmap

49. 字母異位詞分組

給定一個字串陣列,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字串。

示例:

輸入: ["eat", "tea", "tan", "ate", "nat", "bat"]
輸出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"
] ]

說明:

  • 所有輸入均為小寫字母。
  • 不考慮答案輸出的順序。

方法一:雜湊表

如果兩個單詞為「字母異位詞」,那麼字元排序以後構成的字串一定是相同的。利用這個思想,構建一個HashMap,key 為排序以後的字串,value 為 List 陣列,List 裡面存原字串。返回map的values。

public List<List<String>> groupAnagrams(String[] strs) {
    int n = strs.length;
    Map<String, List<String>> map = new HashMap
<>(); for (int i = 0; i < n; i++) { char[] chars = strs[i].toCharArray(); Arrays.sort(chars); String tmp = new String(chars); List<String > list = map.getOrDefault(tmp, new ArrayList<>()); list.add(strs[i]); map.put(tmp, list); }
return new ArrayList<>(map.values()); }

執行結果

在這裡插入圖片描述