首页 > 代码库 > LeetCode Anagrams
LeetCode Anagrams
struct mystat { int idx; int cnt[26]; mystat(int id = 0) {idx = id;}};bool cmp(const mystat &a, const mystat &b) { for (int i=0; i<26; i++) { if (a.cnt[i] < b.cnt[i]) { return true; } else if (a.cnt[i] > b.cnt[i]) { break; } else { continue; } } return false;}bool same(const mystat &a, const mystat &b) { for (int i=0; i<26; i++) { if (a.cnt[i] != b.cnt[i]) return false; } return true;}class Solution {public: vector<string> anagrams(vector<string> &strs) { vector<string> res; vector<mystat> stats; int len = strs.size(); for (int i=0; i<len; i++) { stats.push_back(mystat(i)); for (int j=strs[i].size() - 1; j>=0; j--) { stats.back().cnt[strs[i][j] - ‘a‘]++; } } sort(stats.begin(), stats.end(), cmp); int si = 0; while (si < len ) { int i = si + 1; for (; i<len; i++) { if (same(stats[si], stats[i])) { res.push_back(strs[stats[i].idx]); } else { break; } } if (si + 1 < i) { res.push_back(strs[stats[si].idx]); } si = i; } return res; } };
虽然做出来了,不过写那么长,时间又是150ms+肯定还有什么巧妙的方法。
LeetCode Anagrams
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。