Group Anagrams
Question
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"],
Solution
一樣,自己有想到跟解答類似的解法,就是用 Map
public List<List<String>> groupAnagrams(String[] strs) {
if (strs.length == 0 || strs == null) {
return new ArrayList<List<String>>();
}
Map<String, List<String>> map = new HashMap<String, List<String>>();
for (String s : strs) {
char[] chars = s.toCharArray();
Arrays.sort(chars);
String tempStr = String.valueOf(chars);
if (!map.containsKey(tempStr)) {
map.put(tempStr, new ArrayList<String>());
}
map.get(tempStr).add(s);
}
return new ArrayList<List<String>>(map.values());
}