给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]主要是如何分组效率最高,用hashmap,需要的解决问题是通过什么来判断equal,最简单是使用String
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> ret=new ArrayList();
HashMap<String,List<String>> map=new HashMap();
for(String s:strs){
int[] record=new int[26];
char[] array=s.toCharArray();
for(char c:array) record[c-'a']++;
String key="";
for(int i=0;i<record.length;i++) key=key.concat(String.valueOf((char)('a'+i))).concat(record[i]+"");
if(!map.containsKey(key)) map.put(key,new ArrayList());
map.get(key).add(s);
}
for(String key:map.keySet()){
List<String> list=map.get(key);
ret.add(list);
}
return ret;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。