关闭

Group Anagrams

标签: Leetcode
149人阅读 评论(0) 收藏 举报
分类:

题目描述

Given an array of strings, group anagrams together.
For example, given: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
Return:
[
[“ate”, “eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]
Note:
For the return value, each inner list’s elements must follow the lexicographic order.
All inputs will be in lower-case.

题目解答

解题思路

结合排序和hash
用hash来分组
用排序来确定key值
最后对List排序(Collections.sort)

代码实现

public class Solution {
    public List<List<String>> groupAnagrams(String[] args) {
        if(args == null || args.length == 0)
            return null;

        HashMap<String, List<String>> map = new HashMap<>();
        for(int i = 0; i < args.length; i++){

            char[]  c = args[i].toCharArray();
            Arrays.sort(c);
            String key = String.valueOf(c);
            List<String> value = map.get(key);
            if(value == null)
                value = new ArrayList<>();
            value.add(args[i]);
            map.put(key, value);
        }

        List<List<String>> ret = new ArrayList<>();
        for(String key : map.keySet()){
            List<String> temp = map.get(key);
            Collections.sort(temp);
            ret.add(temp);
        }

        return ret;
    }
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39696次
    • 积分:1840
    • 等级:
    • 排名:千里之外
    • 原创:148篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    博客专栏
    最新评论