[LeetCode No.49] 字母异味词分组

题目

题解

根据题目可以看到结果返回的是一个List嵌套List,又是要求“字母相同,位置不同即可为一组”
根据题意可以利用Map的key的唯一性,将字符串转为字符数组并进行排序。加入Map
排序后的字符串数再转为字符串,若其存在于key,则把key对应的List取出,并把初始字符串添加进List。然后把List放回map
若不存在,则新建一个List,将初始字符串添加进List,然后把List放回map

代码

public class Solution {
public static List<List<String>> groupAnagrams(String[] strs) {
        Map<String,ArrayList<String>> ans = new HashMap<String, ArrayList<String>>();

        for (String str:strs){
            char[] c_str = str.toCharArray();
            Arrays.sort(c_str);
            String key = new String(c_str);
            System.out.println(key);
            ArrayList<String> temp = ans.getOrDefault(key,new ArrayList<>());
            temp.add(str);
            ans.put(key,temp);
        }

        return new ArrayList<List<String>>(ans.values());
    }
}
posted @ 2020-12-14 22:12  饼先生  阅读(83)  评论(0编辑  收藏  举报