49. Group Anagrams

来源:互联网 发布:纪梵希淘宝旗舰店真吗 编辑:程序博客网 时间:2024/05/22 14:34

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.

解析
使用HashMap<String, List<String>>结构解决。
对于每个输入String对象,将排序后的字符串作为key,如果key不存在,创建List<String>对象并存入输入的String对象。如果key存在,直接将的String对象存入对应List<String>对象中。

public class Solution {    public List<List<String>> groupAnagrams(String[] strs) {        if(strs == null || strs.length == 0) return new ArrayList<List<String>>();        Map<String, List<String>> map = new HashMap<String, List<String>>();        for(String s : strs){            char[] c = s.toCharArray();            Arrays.sort(c);            String keyStr = String.valueOf(c);            if(!map.containsKey(keyStr)){                map.put(keyStr, new ArrayList<String>());            }            map.get(keyStr).add(s);        }        return new ArrayList<List<String>>(map.values());    }}


原创粉丝点击