leetcode-49 Group Anagrams 동위어 사전 정렬

2232 단어
문제 설명:
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:
  • For the return value, each inner list's elements must follow the lexicographic order.
  • All inputs will be in lower-case.

  • Update (2015-08-09): The signature of the function had been updated to return List> insteadof List, as suggested here. If you still see your function signature return a List,please click the reload button  to reset your code definition.
     
    문제 분석:
    사전의 순서를 정렬하는 방법은 매우 많은데, 이 그림은 집합 중의sort 방법을 이용하여 정렬하는 데 편리하다.
    일치하는 문제를 찾으려면 HashMap을 사용하는 것이 좋습니다.
     
    코드:
    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;
        }
    }

    좋은 웹페이지 즐겨찾기