Group Anagrams

题目地址:
https://leetcode.com/problems/group-anagrams/#/description

题目:
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.

解题思路:
这道题主要就是用map来存string和list的pair。string作为key是按照字母排好序的。

代码:

public List<List<String>> groupAnagrams(String[] strs) {
    Map<String, List<String>> map = new HashMap<>();
    for(String s : strs){
        char[] chars = s.toCharArray();
        Arrays.sort(chars);
        String key = String.valueOf(chars);
        List<String> list = map.get(key);
        if(list == null){
            list = new ArrayList<>();
        }
        list.add(s);
        map.put(key, list);
    }
    List<List<String>> rst = new ArrayList<>();
    for(String key : map.keySet()){
        List<String> list = map.get(key);
        Collections.sort(list);
        rst.add(list);
    }
    return rst;
}





Comments

Popular Posts