码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-Group Anagrams

时间:2016-04-17 13:11:00      阅读:358      评论:0      收藏:0      [点我收藏+]

标签:

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;

映射关系如下:

 

技术分享代码如下:

package leetcode;
import java.util.*;
import java.util.Map.Entry;
//思路:建立一个map映射关系,先对string排好序 -> 作为键 ,然后将map的value映射到List里面去~
//list的优点:可变!
public class GroupAnagrams {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> ans = new ArrayList<>();
        Map<String, List<String>> map = new HashMap<>();

        for (String str : strs) {
            char[] ers = str.toCharArray();
            Arrays.sort(ers);
            String keyStr = String.valueOf(ers);
            if (!map.containsKey(keyStr))
                map.put(keyStr, new ArrayList<>());       //value就是新的list,然后加入原来的str
            map.get(keyStr).add(str);          //如果不是新的list,那么直接加入str
        }
            for (Entry<String, List<String>> entry : map.entrySet()) {          //map的Entry是一个set,不重复,因为不同的entry,hashcode不同
                                         //确保其唯一性
                List<String> newvalues = entry.getValue();
                Collections.sort(newvalues);  //这里,map的key是一个set,而value是一个list,所以可以排序;
                ans.add(newvalues);
            }  
        return ans;
    }

}

leetcode-Group Anagrams

标签:

原文地址:http://www.cnblogs.com/neversayno/p/5400701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!