改了又改,简化了又简化,还是超时。可见必须从数组本身来进行hash运算。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> res;
int flag=0;
for(int i=0;i<strs.size();i++)
{
for(int j=0;j<res.size();j++)
{
if(res[j][0].size()== strs[i].size() && f(res[j][0],strs[i]))
{
res[j].push_back(strs[i]);
flag=1;
break;
}
}
if(flag == 0)
{
vector<string> t;
t.push_back(strs[i]);
res.push_back(t);
}
flag=0;
}
return res;
}
bool f(string a,string b){
int ss[26]={2 ,3 ,5 ,7 ,11 ,13, 17, 19, 23 ,29 ,31 ,37 ,41, 43, 47,53 ,59, 61, 67, 71, 73, 79, 83, 89, 97 };
long long ra=1,rb=1;
for(int i=0;i<a.size();i++)
{
ra = ra*ss[a[i]-‘a‘];
rb = rb*ss[b[i]-‘a‘];
}
return ra==rb;
}
};
原文:http://www.cnblogs.com/yanqi110/p/4986922.html