分享

49. 字母异位词分组

 头号码甲 2020-03-11
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

主要是如何分组效率最高,用hashmap,需要的解决问题是通过什么来判断equal,最简单是使用String

public List<List<String>> groupAnagrams(String[] strs) {
    List<List<String>> ret=new ArrayList();
    HashMap<String,List<String>> map=new HashMap();
    for(String s:strs){
        int[] record=new int[26];
        char[] array=s.toCharArray();
        for(char c:array) record[c-'a']++;
        String key="";
        for(int i=0;i<record.length;i++) key=key.concat(String.valueOf((char)('a'+i))).concat(record[i]+"");
        if(!map.containsKey(key)) map.put(key,new ArrayList());
        map.get(key).add(s);
    }
    for(String key:map.keySet()){
        List<String> list=map.get(key);
        ret.add(list);
    }
    return ret;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多