Given an array of strings, group anagrams together.
Example:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
Note:
All inputs will be in lowercase.
The order of your output does not matter.
Seen this question in a real interview before? YesNo
Difficulty:Medium
Total Accepted:232.3K
Total Submissions:567.7K
Contributor:LeetCode
Subscribe to see which companies asked this question.
Related Topics
Hash TableString
Similar Questions
Valid AnagramGroup Shifted Strings
Java
1
class Solution {
2
public List<List<String>> groupAnagrams(String[] strs) {
3
List<List<String>> temp = new ArrayList<>();
4
Map<String, List<String>> map = new HashMap<>();
5
for (int i = 0; i < strs.length; i++) {
6
String str = strs[i];
7
String key = sortString(str);
8
if (map.containsKey(key)) {
9
map.get(key).add(str);
10
} else {
11
ArrayList<String> value = new ArrayList<>();
12
value.add(str);
13
map.put(key, value);
14
}
15
}
16
Set<Map.Entry<String, List<String>>> entries = map.entrySet();
17
Iterator<Map.Entry<String, List<String>>> iterator = entries.iterator();
18
while (iterator.hasNext()) {
19
Map.Entry<String, List<String>> next = iterator.next();
20
temp.add(next.getValue());
21
}
22
return temp;
23
24
}
25
26
String sortString(String string) {
27
char[] chars = string.toCharArray();
28
Arrays.sort(chars);
29
return String.valueOf(chars);
30
}
31
}
Custom Testcase( C