提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目描述
给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。
字母异位词指字母相同,但排列不同的字符串。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]] 示例 2:
输入: strs = [""] 输出: [[""]] 示例 3:
输入: strs = [“a”] 输出: [[“a”]]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/group-anagrams 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题过程
解题思路
将字符串数组中的字符按照字符大小排序。以排好序的字符串为key值,value值为一个列表。当key对应还没有value值时,创建新的列表,并将当前字符串存入;当key已有对应的value值时,将当前字符串加入key对应的列表中。最后将map中的值全部放进res列表返回即可。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> res = new ArrayList<>();
Map<String,List<String>> map = new HashMap<>();
for(int i = 0; i < strs.length; i++){
String temp = sortCharacter(strs[i]);
if(!map.containsKey(temp)){
List<String> tempMap = new ArrayList();
tempMap.add(strs[i]);
map.put(temp, tempMap);
}else{
List<String> tempMap2 = map.get(temp);
tempMap2.add(strs[i]);
map.put(temp, tempMap2);
}
}
for(String mmp : map.keySet()){
res.add(map.get(mmp));
}
return res;
}
public String sortCharacter(String str){
char[] chars = str.toCharArray();
Arrays.sort(chars);
String s = new String(chars);
return s;
}
}
总结
|