给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
所有输入均为小写字母。
不考虑答案输出的顺序。
思路
判断字符串是否相等,可以进行排序,再做判断
用hashmap来存储数据,键为该字符串经过排序的结果,值为list添加了该字符串的原值
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(int i=0;i<strs.length;++i){
char[] s=strs[i].toCharArray();
Arrays.sort(s);
String st=new String(s);
List<String> list=new ArrayList<String>();
if(map.containsKey(st)){
list=map.get(st);
}
list.add(strs[i]);
map.put(st,list);
}
return new ArrayList<List<String>>(map.values());
}
}
网友评论