Group Anagrams(根据要求构造hashmap的key)

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]
/* 把字母构成(包括次数)相同的单词放在一起
 * 最简单的方法:  asdf  fdsa dfas  按字母排序后都是asdf
 *
 * 关键是设立一种映射方法: hash(asdf)=hash(fdsa)=hash(dfas)
 * 统计出现次数 合成字符串?
 * 1a2b ?
 *
 * 其实二者效率差不多
 * */
class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> ret;
        unordered_map<string, vector<string>>  m;
        for(string str:strs){
            string tmp(str);
            sort(tmp.begin(), tmp.end());
            m[tmp].push_back(str);
        }
        for(auto elem : m)
            ret.push_back(elem.second);
        return ret;
    }
};

猜你喜欢

转载自blog.csdn.net/futangxiang4793/article/details/88866996
今日推荐