算法9 Group Anagrams

来源:互联网 发布:淘宝有情侣网店吗 编辑:程序博客网 时间:2024/06/01 10:14

题目:给出一组字符串,把 字母相同顺序不同的词 分成一类

例如,给出: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],

返回:

[        ["ate", "eat","tea"],        ["nat","tan"],        ["bat"]]

思路:对数组遍历,取出每个字符串进行排序,将排序过后相同的字符串作为Map的key传入,然后value传入排序之前的字符串的集合。

代码:

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>>();    Arrays.sort(strs);    for (String s : strs) {        char[] c = s.toCharArray();        //取出每个字符串进行排序        Arrays.sort(c);        String keyStr = String.valueOf(c);        //排序过后相同的字符串作为Map的key传入        if (!map.containsKey(keyStr)) map.put(keyStr, new ArrayList<String>());        //value传入排序之前的字符串的集合        map.get(keyStr).add(s);    }    return new ArrayList<List<String>>(map.values());}
原创粉丝点击