49. Group Anagrams

2018/10/25 leetcode 共 544 字,约 2 分钟

title

problem link

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

solution

字符串分组,每个字符count相等的唯一组,字符串排序即可判断。

字符串可以基数排序 O(n)

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> map=new HashMap<>();
        for (String s : strs) {
            char[] t=s.toCharArray();
            Arrays.sort(t);
            String t1=String.valueOf(t);
            map.putIfAbsent(t1,new ArrayList<>());
            map.get(t1).add(s);
        }
        return new ArrayList<>(map.values());
    }
}

Search

    Table of Contents