题目描述
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.
所有的输入都是小写字母。
输出的顺序无所谓。
思路分析
很简单的题目,就是把数组中的每个字符串排序一下,然后用一个哈希表Map<排序过的字符串,List<乱序字符串>>记录下来,最后转成结果的格式就行了。
代码实现
public class Solution {
/**
* 101 / 101 test cases passed.
* Status: Accepted
* Runtime: 23 ms
*
* @param strs
* @return
*/
public List> groupAnagrams(String[] strs) {
Map> resMap = new HashMap<>();
for (String str : strs) {
char[] cstr = str.toCharArray();
Arrays.sort(cstr);
String sortedStr = String.valueOf(cstr);
if (resMap.containsKey(sortedStr)) {
resMap.get(sortedStr).add(str);
} else {
List list = new ArrayList<>();
list.add(str);
resMap.put(sortedStr, list);
}
}
return new ArrayList<>(resMap.values());
}
}