Group Anagrams(***)

来源:互联网 发布:淘宝美工助理官网 编辑:程序博客网 时间:2024/04/29 04:31

题目:
Given an array of strings, group anagrams together.

For example, given: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
Return:

[ [“ate”, “eat”,”tea”], [“nat”,”tan”], [“bat”] ]

思路:
1. 对每一个单词进行排序,通过map判断得到的单词是否已经存在,如果存在则放入对应value(List)中
2. 再对value进行排序,按照字典顺序

public class Solution {   public static List<List<String>> groupAnagrams(String[] strs) {        HashMap<String , List<String>> map = new HashMap<> ();        for(String s : strs) {            char[] chars = s.toCharArray();            Arrays.sort(chars);            String tmp = new String(chars);            if(map.containsKey(tmp)) {                map.get(tmp).add(s);            } else {                ArrayList<String> list = new ArrayList<>();                list.add(s);                map.put(tmp, list);            }        }        List<List<String>> groups =   new ArrayList<> ( map.values());        for(int i = 0 ; i < groups.size(); i++) {            List<String> group = groups.get(i);            String[] ss =  group.toArray(new String[group.size()]);            Arrays.sort(ss);            groups.set(i, Arrays.asList(ss));        }        return groups;    }}
0 0
原创粉丝点击