给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
, 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
说明:
- 所有输入均为小写字母。
- 不考虑答案输出的顺序。
采用HashMap<String,List<String>>,每次讲读入的字符串在map中查找(这里需将读入的字符串转化成数组后用sort()来排列好)。
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> list = new ArrayList<>();
int len = strs.length;
Map<String, List<String>> map = new HashMap<>();
String temp = "";
for(int i = 0; i < len, i++){
temp = strs[i];
char[] arrayToString = temp.toCharArray();
Arrays.sort(arrayToString);
temp = new String(arrayToString);
if(map.containsKey(temp)){
map.get(temp).add(strs[i]);
}else{
List<String> item= new ArrayList<>();
item.add(strs[i]);
map.put(temp, item);
}
}
for(List<String> value : map.values()){
list.add(value);
}
return list;
}