思路:可以对每个字符串内部进行排序,如果是同一组的字母,那么只有一个从小到大的表征,然后对这种表征计数,只有数目大于1才将原向量对应位置的字符串压入结果向量中去。
code:
class Solution {
public:
vector<string> anagrams(vector<string> &strs) {
vector<string> ret,sorted_strs(strs);
for(int i = 0;i < strs.size();i++)
sort(sorted_strs[i].begin(),sorted_strs[i].end());
map<string,int> hash;
map<string,bool> flag;
int i;
for(i = 0;i <strs.size();i++){
hash[sorted_strs[i]]++;
if(hash[sorted_strs[i]] > 1 && !flag[sorted_strs[i]]){
flag[sorted_strs[i]] = true;
for(int j = 0;j < strs.size();j++){
if(sorted_strs[i] == sorted_strs[j])
ret.push_back(strs[j]);
}
}
}
return ret;
}
};