49.字符串分类
来源:互联网 发布:医学数据分析公司 编辑:程序博客网 时间:2024/05/21 06:53
Group Anagrams
问题描述:
Given an array of strings, group anagrams together.
For example, given: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"]]
知识补充:
字符串也可以进行排序
string s;sort(s.begin(),s.end());
参考答案中很巧妙地字符串中每个字符代表一个数字,通过计算他们的乘法,按题目规则不同的组合得到的结果是不同的,为了确保最后得到的结果不会重叠,用质数来代表每个字母,这样就不会出现不同字符串出现了相同结果。
测试代码:
class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>> result; vector<string> res; string temp = ""; for(int i=0;i<strs.size();i++) { int j = 0; temp = strs[i]; sort(temp.begin(),temp.end()); while(j<res.size()) { if(res[j]==temp) { result[j].push_back(strs[i]); break; } j++; } if(j==res.size()) { res.push_back(temp); vector<string> s; s.push_back(strs[i]); result.push_back(s); } } return result; }};
性能:
参考答案:
class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>> result; unordered_map<int, int> hashmap; int idx = 0; for(const string& s : strs) { int hash = get_hash(s); if(hashmap.find(hash) == hashmap.end()) { hashmap[hash] = idx++; result.push_back(vector<string>{s}); } else { result[hashmap[hash]].push_back(s); } } return result; }private: int get_hash(const string& s) { const vector<int> prime = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103}; int a = 1; for(char c : s) { a *= prime[c - 'a']; } return a; }};
性能:
阅读全文
0 0
- 49.字符串分类
- 字符串分类
- 字符串分类
- 字符串分类
- 数据库连接字符串分类
- 【算法】字符串分类
- 【编程题】字符串分类
- PHP字符串函数分类
- PHP 字符串函数分类总结
- 字符串方法返回值分类
- Python 字符串方法分类详解
- 使用字符串核函数进行文本分类
- 题型分类------字符串和数组(Doing)
- 字符串反转+ 大数相加 + IP分类
- UILabel分类扩展属性字符串的使用
- Hot Air Ballooning (字符串分类)
- 字符串分类,输出字符串中字母,数字,符号的个数
- 返回字符串服务器目录中的文件名并加以分类
- TCP之性能优化避免慢启动
- 设计模式之--单例模式(Singleton)的常见应用场景
- Matrix Chain Multiplication
- 如何快速定位自己热爱的工作
- Mongdb和mysql的一些比较
- 49.字符串分类
- 递归方法计算一个中缀表达式的值
- ng-book 2 r60 (Angular 4) 简介
- 第四章 一个失去部队的将军 还不如一个回作战的小兵
- TCP协议详解(慢启动,流量控制,阻塞控制之类)
- HTML5_canvas
- 二分大法示例-cf的Enduring Exodus
- Javascript实现选项卡功能
- 类模板实现数组排序