49. Group Anagrams - LeetCode

Question

49. Group Anagrams

Solution

思路:维护一个map,key是输入数组中的字符串(根据字符排好序)

Java实现:

public List<List<String>> groupAnagrams(String[] strs) {
    Map<String, List<String>> map = new HashMap<>();
    for (String str : strs) {
        String key = getSorted(str);

        List<String> list = map.get(key);
        if (list == null) {
            list = new ArrayList<>();
            map.put(key, list);
        }
        list.add(str);

        // if (!map.containsKey(key)) map.put(key, new ArrayList());
        // map.get(key).add(str);
    }
    return new ArrayList<>(map.values()); // map转list
}

// 返回根据字符排序后的字符串 如:cba返回abc
private String getSorted(String str) {
    char[] arr = str.toCharArray();
    Arrays.sort(arr);
    // return new String(arr);
    return String.valueOf(arr); // 这样写效率更高
}

猜你喜欢

转载自www.cnblogs.com/okokabcd/p/9195653.html