其他分享
首页 > 其他分享> > 2022-8-4 剑指offer-哈希

2022-8-4 剑指offer-哈希

作者:互联网

剑指 Offer II 033. 变位词组

难度中等

给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。

注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。

 1 class Solution {
 2     public List<List<String>> groupAnagrams(String[] strs) {
 3         Map<String,List<String>> map=new HashMap<>();
 4         List<List<String>> ans=new ArrayList<>();
 5         for (String s:strs){
 6             int[] cnt=new int[26];
 7             for (int i=0;i<s.length();i++){
 8                 cnt[s.charAt(i)-'a']++;
 9             }
10             StringBuilder sb=new StringBuilder();
11             for (int i=0;i<26;i++){
12                 sb.append('a'+i);
13                 sb.append(cnt[i]);
14             }
15             String temp=sb.toString();
16             if (map.containsKey(temp)){
17                 map.get(temp).add(s);
18             }else{
19                 List<String> list=new ArrayList<>();
20                 list.add(s);
21                 map.put(temp,list);
22                 ans.add(list);
23             }
24         }
25         return ans;
26     }
27 }

思路:利用数组累计字母数量,然后通过字母+数量唯一确定hash的key来快速判断是否有变位词了。

(排序后的key最快)

标签:哈希,变位,int,offer,list,strs,2022,ans,new
来源: https://www.cnblogs.com/benbicao/p/16550806.html