【LeetCode】每日一題49. 字母異位詞分組
阿新 • • 發佈:2020-12-16
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());
}