数据结构与算法-字母异位词分组49(java)

2020-02-24  本文已影响0人  这里有颗小螺帽

tags:


题目:
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:

所有输入均为小写字母。
不考虑答案输出的顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/group-anagrams
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题:

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        //new 一个hashmap
        HashMap<String,ArrayList<String>> map = new HashMap<>();
        //遍历数组找到字母异位词
        for(String str : strs){
            //将字符串转为字符数组
            char[] ch = str.toCharArray();
            //排列字符
            Arrays.sort(ch);
            //排列后的字符转为 String
            String ss = String.valueOf(ch);
            //如果 map 里不存在当前的 key,则 put 进去一个 key(ss),value(new ArrayList<>())
            if(!map.containsKey(ss)){
                map.put(ss,new ArrayList<>());
            }
            //添加 value
            map.get(ss).add(str);
        }

        return new ArrayList<>(map.values());
    }
}
上一篇 下一篇

猜你喜欢

热点阅读