首页 > 其他 > 详细

49.Group Anagrams

时间:2016-01-08 20:21:02      阅读:189      评论: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.

    我们可以利用map来解决这个问题。map的key设置为排序后的字符串,value为字符串数组,将每一个排序之后的值为key的字符串加入value这个数组。对于每一个字符串s,复制一个副本str,将str排序后,将s加入map[str]中。然后依次遍历map,将value对应的数组排序之后加入将要返回的result数组中。最后返回result即可。

  1. class Solution {
    public:
        vector<vector<string>> groupAnagrams(vector<string>& strs) {
            unordered_map<string,vector<string>> map;
            for(auto &s: strs){
                string str(s);
                sort(str.begin(),str.end());
                map[str].push_back(s);
            }
            vector<vector<string>> result(map.size());
            int i=0;
            for(auto it=map.begin();it!=map.end();it++,i++){
                result[i].swap(it->second);
                sort(result[i].begin(),result[i].end());
            }
            return result;
            
        }
    };

     

 

49.Group Anagrams

原文:http://www.cnblogs.com/zhoudayang/p/5114324.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!