分析
题目的意思就是给若干个字符串单词,然后将含有全部相同的字母放到一个List<String>
中。我们的核心问题是将这个放到哪里?
你可以使用暴力枚举,每次遍历判断,但是那样效率太低,所以我们可以进行哈希 存储。创建一个Map<String,List<String>>
类型的HashMap进行存储。
实现代码为:
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>>lists=new ArrayList<>();
Map<String,List<String>>map=new HashMap<>();
for(String str: strs)
{
char vachar[]=str.toCharArray();
Arrays.sort(vachar);
String team=String.copyValueOf(vachar);
List<String>list=map.getOrDefault(team,new ArrayList<>());
list.add(str);
map.put(team,list);
}
// for(List<String> list:map.values())
// {
// lists.add(list);
// }
lists.addAll(map.values());
return lists;
}
原创不易,bigsai请你帮两件事帮忙一下:
-
star支持一下, 您的肯定是我在平台创作的源源动力。
-
微信搜索「bigsai」,关注我的公众号,不仅免费送你电子书,我还会第一时间在公众号分享知识技术。加我还可拉你进力扣打卡群一起打卡LeetCode。
记得关注、咱们下次再见!