zoukankan      html  css  js  c++  java
  • 字母异位词分组

    题目:

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

    示例:

    输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
    输出:
    [
      ["ate","eat","tea"],
      ["nat","tan"],
      ["bat"]
    ]
    class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
            
            if(strs.length==0)
                return new ArrayList<>();
            
            Map<String,List<String>> hashMap=new HashMap<>();
            
            for(String s:strs)
            {
                char[] ch=s.toCharArray();
                Arrays.sort(ch);
                String key=String.valueOf(ch);
                
                if(!hashMap.containsKey(key))
                    hashMap.put(key, new ArrayList());
                hashMap.get(key).add(s);
            }
            
            return new ArrayList<>(hashMap.values());
        }
    }

    思路:将Hashmap数据结构用的特别巧妙,key的值是字符串,而value的值是一个列表;

               其中在判断每个单词是否相同时,它将其每个单词排序,作为key值,如果是这个key值则将其添加到key的值中。

  • 相关阅读:
    第36课 经典问题解析三
    第35课 函数对象分析
    67. Add Binary
    66. Plus One
    58. Length of Last Word
    53. Maximum Subarray
    38. Count and Say
    35. Search Insert Position
    28. Implement strStr()
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/Optimism/p/10779660.html
Copyright © 2011-2022 走看看