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);
        }
    }
  • 相关阅读:
    C语言得到当前系统时间
    【solr这四个主题】在Tomcat 部署Solr4.x
    MySQL 一般查询日志(General Query Log)
    iOS7 UIKit动力学-碰撞特性UICollisionBehavior 上
    Java Persistence with MyBatis 3(中国版) 第五章 与Spring集成
    Kaggle入门——使用scikit-learn解决DigitRecognition问题
    Effective C++:规定34:区分接口继承和实现继承
    Critical thinking and Thoughtful writing
    我的时间,GTD做主
    jquery自己主动旋转的登录界面的背景代码登录页背景图
  • 原文地址:https://www.cnblogs.com/Decmber/p/4924470.html
Copyright © 2011-2022 走看看