題目描述:
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
題目解析:
代碼如下:
class Solution {
public:
// 是判斷的時候對每個單詞進行排序,然後將每個新出現的單詞和在結果集中的索引放入一個map中進行查找
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
vector<vector<string>> out;
map<string, int> m;
for(int i=0; i<strs.size(); ++i)
{
string s = strs[i];
// 排序之後,字符一樣但是順序不一樣的單詞都會變爲一樣
sort(s.begin(), s.end());
if(m.find(s) != m.end())
out[m[s]].push_back(strs[i]);
else
{
vector<string>temp(1, strs[i]);
out.push_back(temp);
m[s] = out.size()-1;
}
}
return out;
}
};