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);
    }
}
时间: 2024-08-09 08:49:00

LeetCode--Group Anagrams--Java的相关文章

Leetcode——————Group Anagrams

这道题对我来说比较难: 1.首先题目要求输出的结果,应该用什么形式的数据结构来存储呢 2.涉及到map,collection,sort( )等函数,或者其他的一堆东西,几乎一无所知. copy大神代码如下: public class Solution { //返回值是以链表作为节点的链表. public List<List<String>> groupAnagrams(String[] strs) { Map<String, List<String>> ma

LeetCode()Group Anagrams

改了又改,简化了又简化,还是超时.可见必须从数组本身来进行hash运算. class Solution { public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>> res; int flag=0; for(int i=0;i<strs.size();i++) { for(int j=0;j<res.s

【Leetcode】Group Anagrams

题目链接:https://leetcode.com/problems/anagrams/ 题目: Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", &q

LeetCode 49. 字母异位词分组(Group Anagrams)

49. 字母异位词分组 49. Group Anagrams 题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ??["ate","eat","tea"], ??[&

【一天一道LeetCode】#49. Group Anagrams

一天一道LeetCode系列 (一)题目 Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"

【LeetCode】49. Group Anagrams

Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat",

Group Anagrams Leetcode

Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat",

Leetcode 49. Group Anagrams

Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat",

LeetCode OJ:Group Anagrams(同字符字符群)

Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat",

【Leetcode】【Medium】Group Anagrams

Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat",