题目
给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。
注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sfvd7V
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路和代码
class Solution {
// 每个单词出现的次数是否相同,巧用JDK
public List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> map = new HashMap<>();
// 迭代
for(String str : strs){
char[] ch = str.toCharArray();
// 排序
Arrays.sort(ch);
// 再重新组合成字符串
String s = new String(ch);
// 如果map中不含有当前字符串
if(!map.containsKey(s)){
map.put(s, new ArrayList<>());
}
// 当数组中原来的值放到集合中
map.get(s).add(str);
}
// 取出集合
return new ArrayList<>(map.values());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96171.html