首页 > 其他 > 详细

49 Group Anagrams

时间:2020-03-08 18:02:23      阅读:70      评论:0      收藏:0      [点我收藏+]

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

想法是。

把每个输入都排序, 如果是anagram 则,排序后应该一样。

这样想到了 用Map,然后key为排序后的anagram,value 为List《String》 可以把所有的anagram放到一块。

 private static final int INIT_SIZE= 16;
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>>result = new ArrayList<>();
        Map<String, List<String>>anagrams =new HashMap<>();
        for(String str:strs){
            String charsAfterSorted=sortTheString(str);
            if(anagrams.containsKey(charsAfterSorted)){
                List<String>anagram = anagrams.get(charsAfterSorted);
                anagram.add(str);
            }else{
                List<String>anagram = new ArrayList<>(INIT_SIZE);
                anagram.add(str);
                anagrams.put(charsAfterSorted, anagram);
            }
        }
       // anagrams.forEach((k,v)-> System.out.println("chars :"+k+" anagrams:"+v));
        anagrams.forEach((k,v)-> result.add(v));
        return result;
    }
    private String sortTheString (String str){
        char[]chars =str.toCharArray();
        Arrays.sort(chars);
        return new String(chars);
    }

 

49 Group Anagrams

原文:https://www.cnblogs.com/tangdatou/p/12443832.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!