美文网首页
算法9 Group Anagrams

算法9 Group Anagrams

作者: holmes000 | 来源:发表于2017-10-22 22:43 被阅读0次

题目:给出一组字符串,把 字母相同顺序不同的词 分成一类

例如,给出: ["eat", "tea", "tan", "ate", "nat", "bat"],

返回:

    [
            ["ate", "eat","tea"],
            ["nat","tan"],
            ["bat"]
    ]

思路:对数组遍历,取出每个字符串进行排序,将排序过后相同的字符串作为Map的key传入,然后value传入排序之前的字符串的集合。

代码:

public List<List<String>> groupAnagrams(String[] strs) {
    //若输入为空则直接返回
    if (strs == null || strs.length == 0) return new ArrayList<List<String>>();
    Map<String, List<String>> map = new HashMap<String, List<String>>();
    Arrays.sort(strs);
    for (String s : strs) {
        char[] c = s.toCharArray();
        //取出每个字符串进行排序
        Arrays.sort(c);
        String keyStr = String.valueOf(c);
        //排序过后相同的字符串作为Map的key传入
        if (!map.containsKey(keyStr)) map.put(keyStr, new ArrayList<String>());
        //value传入排序之前的字符串的集合
        map.get(keyStr).add(s);
    }
    return new ArrayList<List<String>>(map.values());
}

相关文章

网友评论

      本文标题:算法9 Group Anagrams

      本文链接:https://www.haomeiwen.com/subject/yfwnuxtx.html