一、问题描述
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
二、思路
遍历字符串数组时先对每个字符串排序,如果当前字符串没有在map中出现,则需要将当前未排序前的字符串放入字符串数组中;如果出现过,则将未排序前的字符串数组放入排序后具有相同字符的行。
三、代码
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string,int> map;
vector<vector<string>> vec;
int count = 1;
for(auto substr : strs){
string s = substr;
sort(s.begin(),s.end());
if(map[s] == 0){
vector<string> cur(1);
cur[0] = substr;
vec.push_back(cur);
map[s] = count++;
}else{
vec[map[s] - 1].push_back(substr);
}
}
return vec;
}
};