Given an array of strings strs
, group the anagrams together. You can return the answer in any order.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2:
Input: strs = [""] Output: [[""]]
Example 3:
Input: strs = ["a"] Output: [["a"]]
Constraints:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
consists of lowercase English letters.
思路:每次key 变成charArray sort成同一个key。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> lists = new ArrayList<List<String>>();
HashMap<String, List<String>> hashmap = new HashMap<>();
for(String str: strs) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
String newkey = new String(chars);
if(hashmap.containsKey(newkey)) {
hashmap.get(newkey).add(str);
} else {
hashmap.put(newkey, new ArrayList<String>());
hashmap.get(newkey).add(str);
}
}
for(String key: hashmap.keySet()) {
lists.add(hashmap.get(key));
}
return lists;
}
}