这题关键是明白题意,题意是说去除那些在给定的数组里没有其anagrams的那些值,凡是有anagram的搜输出,甚至顺序都不重要,之后感觉没什么了。
vector<string> anagrams(vector<string> &strs) {
int lenstr = strs.size();
vector<string> ret;
if(lenstr == 0)
return ret;
vector<string> strtemp(strs);
map<string,int> mp;
for (int i=0;i<lenstr;i++)
{
sort(strtemp[i].begin(),strtemp[i].end());
mp[strtemp[i]]++;
}
for (int i=0;i<lenstr;i++)
{
if (mp[strtemp[i]]>1)
{
ret.push_back(strs[i]);
}
}
return ret;
}int _tmain(int argc, _TCHAR* argv[])
{
vector<string> aa;
aa.push_back("tea");
aa.push_back("and");
aa.push_back("eta");
aa.push_back("dan");
aa.push_back("bea");
aa.push_back("ate");
vector<string> ret;
ret = anagrams(aa);
vector<string>::iterator iter = ret.begin();
while(iter!=ret.end())
{
cout<<*iter<<" ";
iter++;
}
cout<<endl;
system("pause");
return 0;
}

本文介绍了一种算法,用于从给定数组中筛选出具有anagrams的元素,忽略顺序并输出结果。
388

被折叠的 条评论
为什么被折叠?



