改了又改,简化了又简化,还是超时。可见必须从数组本身来进行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; } };
时间: 2024-10-12 04:12:27