给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出:
[
[“ate”,“eat”,“tea”],
[“nat”,“tan”],
[“bat”]
]
通过sort方法把异位词挑出来,通过hashmap把异位词放到同一个集合里
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> map = new HashMap();
for(String s:strs){
String ss=sort(s);
if(!map.containsKey(ss)){
map.put(ss,new ArrayList());
}
map.get(ss).add(s);
}
return new ArrayList(map.values());
}
public String sort(String s){
int table[] = new int[26];
for(int i=0;i<s.length();i++){
table[s.charAt(i)-'a']++;
}
StringBuilder st = new StringBuilder();
for(int i=0;i<26;i++){
st.append(table[i]+"-");
}
return st.toString();
}
}