解题思路
遍历字符串数组,将字符串的顺序调整为26个字母的顺序,并用一个map记录出现的次数,之后再遍历一次数组,若调整顺序后的字母出现的次数大于等于2的则将该字符串放入结果数组中,最后返回结果。
代码
class Solution {
public:
vector<string> anagrams(vector<string> &strs) {
map<string,int>m;
vector<string>res;
for(int i = 0;i < strs.size();i++){
string tmp = strs[i];
sort(tmp.begin(),tmp.end());
if(m.find(tmp) == m.end())
m[tmp] = 1;
else
m[tmp]++;
}
for(int i = 0;i < strs.size();i++){
string tmp = strs[i];
sort(tmp.begin(),tmp.end());
if(m[tmp] >= 2)
res.push_back(strs[i]);
}
return res;
}
};