zoukankan      html  css  js  c++  java
  • LeetCode--Group Anagrams--Java

    Given an array of strings, group anagrams together.

    For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
    Return:

    [
      ["ate", "eat","tea"],
      ["nat","tan"],
      ["bat"]
    ]

    Note:

    1. For the return value, each inner list's elements must follow the lexicographic order.
    2. All inputs will be in lower-case.

    Update (2015-08-09):
    The signature of the function had been updated to return list<list<string>> instead of list<string>, as suggested here. If you still see your function signature return alist<string>, please click the reload button  to reset your code definition.

    Subscribe to see which companies asked this question

    public class Solution {  
        public List<List<String>> groupAnagrams(String[] strs) {  
            List<List<String>>result = new ArrayList<>();  
            if(strs == null || strs.length == 0)  
               return result;  
            //将字典序的字符串作为key,将其同位词组转到一个List中存储到HashMap中  
            HashMap<String,List<String>>map = new HashMap<>();  
             
            for(int i = 0; i < strs.length; i++) {  
               char[] chars = strs[i].toCharArray();  
               // 字典序排序  
               Arrays.sort(chars);  
               String temp = new String(chars);  
                 
               if (!map.containsKey(temp)) {  
                   List<String> result_list = new ArrayList<>();  
                   result_list.add(strs[i]);  
                   map.put(temp, result_list);  
               } else {  
                   map.get(temp).add(strs[i]);  
               }  
            }  
             
            //遍历map,对ArrayList进行字典序排序  
            Iterator<Map.Entry<String,List<String>>>iterator = map.entrySet().iterator();  
            while(iterator.hasNext()) {  
               Map.Entry<String,List<String>> entry = iterator.next();  
               List<String> temp_list = entry.getValue();  
               Collections.sort(temp_list);  
               result.add(temp_list);  
            }         
            return result;  
        }  
    }  
    public class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
           Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();
           for(String str : strs){
               String sortedstr = Sortstr(str);
               if(map.containsKey(sortedstr)){
                   map.get(sortedstr).add(str);
               }
               else{
                   map.put(sortedstr,new ArrayList<String>());
                   map.get(sortedstr).add(str);
               }
           }
           List<List<String>> result = new ArrayList<List<String>>(map.values());
           for(List<String> res : result){
               Collections.sort(res);
           }
           return result;
        }
        private String Sortstr(String str){
            char[] char1 = str.toCharArray();
            Arrays.sort(char1);
            return new String(char1);
        }
    }
  • 相关阅读:
    win10下Anaconda3在虚拟环境python_version=3.5.3 中配置pyspark
    在Pycharm上编写WordCount程序
    ASP.NET Core读取AppSettings
    如何高逼格读取Web.config中的AppSettings
    C# 防止同时调用=========使用读写锁三行代码简单解决多线程并发的问题
    C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
    Sql Server 里的向上取整、向下取整、四舍五入取整的实例!
    ECMAscript5 新增数组内函数
    js 严格模式
    js中数组去重
  • 原文地址:https://www.cnblogs.com/Decmber/p/4924470.html
Copyright © 2011-2022 走看看