面试题 10.02. 变位词组 难度[中等]
编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。
注意:本题相对原题稍作修改
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
- 所有输入均为小写字母。
- 不考虑答案输出的顺序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/group-anagrams-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一:HashMap遍历
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String ,List<String>> map = new HashMap<>();
for(String s:strs){
char [] cs = s.toCharArray();
Arrays.sort(cs);
String ss = String.valueOf(cs);
List<String> list = map.getOrDefault(ss.toString(),new ArrayList<>());
list.add(s);
map.put(ss.toString(),list);
}
List<List<String >> ans = new ArrayList<>();
for(String s:map.keySet()){
List<String> list = map.get(s);
ans.add(list);
}
return ans;
}
}
此文章创于本人学习时的记录,如有错误或更优解还请指出