49. Group Anagrams


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: All inputs will be in lower-case.

这道题刚好前几天面试过,把sort的string作为key存在hashmap,能解决所有的anagram的问题

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String,Integer> map = new HashMap<String,Integer>();
        ArrayList<List<String>> res = new ArrayList<List<String>>();
        int order = 0;
        for(int i=0;i<strs.length;i++){
            char[] ca = strs[i].toCharArray();
            Arrays.sort(ca);
            String keyStr = String.valueOf(ca);
            if(map.containsKey(keyStr)){
                res.get(map.get(keyStr)).add(strs[i]);
            }
            else{
                map.put(keyStr,order);
                ArrayList<String> tm = new ArrayList();
                tm.add(strs[i]);
                res.add(tm);
                order++;
            }
        }
        return res;
    }
}

喜欢的话订阅一个呗~第一时间收到文章更新哟~

发表评论

电子邮件地址不会被公开。