Leetcode 49 Group Anagrams
来源:互联网 发布:人工智能电影讲解 编辑:程序博客网 时间:2024/05/16 14:59
没做出来,自己的算法超时
class Solution {public: typedef map<char, int>::iterator MIT; vector<vector<string>> groupAnagrams(vector<string>& strs) { // mark the work vector<vector<string> > ret; vector<map<char,int> > maps; size_t n = strs.size(); for (size_t i = 0; i < n; ++i) { string str = strs[i]; size_t strlen = str.size(); map<char, int> tmp; for (size_t j = 0; j < strlen; ++j) { ++tmp[str[j]]; } size_t k = 0; for (; k != maps.size(); ++k) { if (maps[k].size() != tmp.size()) continue; MIT itmp = tmp.begin(); for (; itmp != tmp.end(); ++itmp) { MIT imaps = maps[k].find(itmp->first); if (maps[k].end() == imaps || imaps->second != itmp->second) break; } if (itmp != tmp.end()) continue; else { ret[k].push_back(str); break; } } // 没找到 if (k == maps.size()) { ret.push_back(vector<string>(1, str)); maps.push_back(tmp); } } for (size_t m = 0; m <ret.size(); ++m) { sort(ret[m].begin(), ret[m].end()); } return ret; }};
参考后
class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { unordered_map <string, multiset<string> > mp; for (auto str : strs) { // for (size_t i = 0; i != strs.size(); ++i) { //string str = strs[i]; string keystr = sortStr(str); // sort(keystr.begin(), keystr.end()); mp[keystr].insert(str); } vector<vector<string> > ret; for (auto m : mp) { ret.push_back(vector<string>(m.second.begin(), m.second.end())); } return ret; }private:// sort 时间复杂度 O(n*logn)// sortStr 时间复杂度 o(n) string sortStr(string s) { string ret; vector<int> flag(26, 0); for (auto ch : s) { ++flag[ch - 'a']; } for (size_t i = 0; i < 26; ++i) { ret += string(flag[i], 'a' + i); } return ret; }};
阅读全文
0 0
- Leetcode#49||Group Anagrams
- leetcode 49:Group Anagrams
- Leetcode 49: Group Anagrams
- 【leetcode】【49】Group Anagrams
- LeetCode 49 - Group Anagrams
- LeetCode 49 Group Anagrams
- leetcode(49):Group Anagrams
- Leetcode 49 Group Anagrams
- Leetcode-49Group Anagrams
- [Leetcode] #49 Group Anagrams
- LeetCode 49 Group Anagrams
- LeetCode-49:Group Anagrams
- Leetcode 49 Group Anagrams
- leetCode 49 Group Anagrams
- Leetcode 49 Group Anagrams
- LeetCode.49 Group Anagrams
- LeetCode 49 Group Anagrams
- Leetcode 49 Group Anagrams
- 实验5:树和二叉树的实验1
- 外观模式学习和思考
- 第2课--2.3自动生成V字型-只能用定位实现
- Netty入门三之最佳实践
- 输入一个链表从尾到头打印链表每个节点的值。
- Leetcode 49 Group Anagrams
- Intel缘何为ARM代工,新标准能被广泛接受么?| 解读
- 马云最新演讲谈AI:AlphaGo赢了人类?So TM What? | 2017 IT领袖峰会
- 数据库事务
- 李彦宏爆百度AI新布局:这些领域将最先出现颠覆
- EventBus在Activity、Fragment、Service中的使用
- noip普及组 caioj.cn 1362
- 在TABLE中设置行的poplist的值跟着当前行的某些列动态变化
- 人脸追踪投影:在你的脸上来一场艺术表演