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的值中。

  • 相关阅读:
    【每日一题】 UVA
    【每日一题】 UVA
    【每日一题】 UVA
    【每日一题】 UVA
    【每日一题】UVA
    【每日一题】 uva-232 模拟+输出要求很严格
    【每日一题】 UVA
    MYSQL约束
    数据库,SQL分类
    类加载器&反射&模块化
  • 原文地址:https://www.cnblogs.com/Optimism/p/10779660.html
Copyright © 2011-2022 走看看