Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
将string 按照anagram也就是回文来分类
需要解决的一个最大的问题就是怎么判断两string是一对回文
这里可以运用String.valueOf(char [])
首先可以用Array进行排序。。排序!!那么相同组成的回文string对应的string就是一样的了
于是就可以mapping到同一个list里面
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if(strs == null || strs.length == 0){
return new ArrayList<List<String>>();
}
Map<String, List<String>> map = new HashMap<String, List<String>>();
for(String s : strs){
char[] c = s.toCharArray();
Arrays.sort(c);
String value = String.valueOf(c);
if(!map.containsKey(value)){
map.put(value, new ArrayList<String>());
}
map.get(value).add(s);
}
return new ArrayList<List<String>>(map.values());
}
}