原题:
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return:
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
] 题目大意:给出一个字符串数组,将其按照组成字母相同这一条件来分组,即组成字符串的字符完全相同的字符串分成一组。
解题思路:
采用HashMap>,每次讲读入的字符串在map中查找(这里需将读入的字符串转化成数组后用sort()来排列好)。
代码如下:
public class Solution {
public List> groupAnagrams(String[] strs) {
List> list = new ArrayList>();
int len = strs.length;
if(len<1) return list;
Map> map = new HashMap>();
String tmp = "";
for(int i=0;i
tmp = strs[i];
char[] arrayOfString = tmp.toCharArray();
Arrays.sort(arrayOfString);
tmp = new String(arrayOfString);
if(map.containsKey(tmp)){
map.get(tmp).add(strs[i]);
}else{
List item = new ArrayList();
item.add(strs[i]);
map.put(tmp, item);
}
}
for (List value : map.values()) {
list.add(value);
}
return list;
}
}