美文网首页
LeetCode代码分析——49. Group Anagrams

LeetCode代码分析——49. Group Anagrams

作者: JackpotDC | 来源:发表于2018-06-18 15:02 被阅读20次

    题目描述

    Given an array of strings, group anagrams together.
    给出一个字符串数组,将乱序组合到一起
    Example:

    Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
    Output:
    [
      ["ate","eat","tea"],
      ["nat","tan"],
      ["bat"]
    ]
    

    Note:

    All inputs will be in lowercase.
    The order of your output does not matter.
    所有的输入都是小写字母。
    输出的顺序无所谓。

    思路分析

    很简单的题目,就是把数组中的每个字符串排序一下,然后用一个哈希表Map<排序过的字符串,List<乱序字符串>>记录下来,最后转成结果的格式就行了。

    代码实现

    public class Solution {
    
        /**
         * 101 / 101 test cases passed.
         *  Status: Accepted
         *  Runtime: 23 ms
         *  
         * @param strs
         * @return
         */
        public List<List<String>> groupAnagrams(String[] strs) {
            Map<String, List<String>> resMap = new HashMap<>();
            for (String str : strs) {
                char[] cstr = str.toCharArray();
                Arrays.sort(cstr);
                String sortedStr = String.valueOf(cstr);
                if (resMap.containsKey(sortedStr)) {
                    resMap.get(sortedStr).add(str);
                } else {
                    List<String> list = new ArrayList<>();
                    list.add(str);
                    resMap.put(sortedStr, list);
                }
            }
            return new ArrayList<>(resMap.values());
        }
    
    }
    

    相关文章

      网友评论

          本文标题:LeetCode代码分析——49. Group Anagrams

          本文链接:https://www.haomeiwen.com/subject/tgsneftx.html