LeetCode-algorithms 49. Group Anagrams

来源:互联网 发布:3dcg制作软件 编辑:程序博客网 时间:2024/05/23 01:12

题目:

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: All inputs will be in lower-case.


思考:

这道题很明显是使用哈希表去进行运算,最后我自己所想到的方法还是最简单的那种,就是按照每个string先排好序,然后把排序后的string作为他的key去存储原来的string内容。这种方法是最简单的一种,我本来希望用一个把字母转成数字,再通过一个哈希函数去对应一个特定的数字,但是最后我并没有想到如何去做。solution里面其中一个答案,他是使用素数去做的,我觉得很有参考意义。但是下面还是贴上自己的代码。


代码:

class Solution {public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> result;if (strs.size() == 0) return result;map<string, vector<string>> hash;string temp_s;for (string s : strs){temp_s = s;sort(temp_s.begin(), temp_s.end());hash[temp_s].push_back(s);}for (map<string, vector<string>>::iterator iter = hash.begin(); iter != hash.end(); iter++){result.push_back(iter->second);}return result;}};

结果: