码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 49 Group Anagram

时间:2019-06-01 11:16:54      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:相同   char   solution   ash   values   array   rar   i++   get   

lc49 Group Anagram

逻辑很简单,就是统计字母出现次数,然后将完全相同的字符串放入同一list

关键是怎么实现

统计的部分,可以通过将string排序,Arrays.sort(),或者像之前int[26]一样,

那么如何一次遍历,就能将相同字符串放入一个list呢?

这里用到了HashMap<String, List<String>>,String为key,用来判断排序过后的str是否相同,若是相同,直接原来的str加入List<String>

 

最后返回值就是把map的value转成List<List<String>>

可以用到一个小方法:

  return new ArrayList<List<String>>(map.values())

因为HashMap的value都是List<String>

 1 class Solution {
 2     public List<List<String>> groupAnagrams(String[] strs) {
 3         List<List<String>> res = new ArrayList<>();
 4         if(strs.length == 0)
 5             return res;
 6         HashMap<String, List<String>> map = new HashMap<>();
 7         
 8         
 9         for(int i=0; i<strs.length; i++){
10             char[] tmp = strs[i].toCharArray();
11             Arrays.sort(tmp);
12             String key = String.valueOf(tmp);
13             if(!map.containsKey(key))
14                 map.put(key, new ArrayList<String>());
15            map.get(key).add(strs[i]);
16         }
17         
18         return new ArrayList<List<String>>(map.values());
19     }
20 }

 

leetcode 49 Group Anagram

标签:相同   char   solution   ash   values   array   rar   i++   get   

原文地址:https://www.cnblogs.com/hwd9654/p/10958849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!