题目链接

Group Anagrams - LeetCode

注意点

  • 字母都是小写的

解法

解法一:用一个字符串表示strs[i]中出现的字母,比如:abc->111000000000000000000000000aab->210000000000000000000000000。同时用map保存hash与vector的下标对应关系。时间复杂度O(n)

class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> ret;
map<string,int> m;
if(strs.size() == 0) return ret;
int i,j,n = strs.size();
for(i = 0;i < n;i++)
{
string hash = "000000000000000000000000000";
for(j = 0;j < strs[i].size();j++)
{
hash[strs[i][j] - 'a']++;
}
cout << strs[i] << " " << hash << endl;
if(m.find(hash) == m.end())
{
vector<string> temp{strs[i]};
ret.push_back(temp);
m[hash] = ret.size()-1;
}
else
{
int index = m[hash];
ret[index].push_back(strs[i]);
}
}
return ret;
}
};

解法二:abcbac的区别只在于顺序不同,因此,只要对strs[i]排序之后进行比较即可。时间复杂度O(nlogn)。

class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> ret;
unordered_map<string, vector<string>> m;
for (string str : strs) {
string t = str;
sort(t.begin(), t.end());
m[t].push_back(str);
}
for (auto a : m) {
ret.push_back(a.second);
}
return ret;
}
};

小结

  • 解法二的时间复杂度更高,但是所花时间更少...

Group Anagrams - LeetCode的更多相关文章

  1. 49. Group Anagrams - LeetCode

    Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List&l ...

  2. leetcode@ [49] Group Anagrams (Hashtable)

    https://leetcode.com/problems/anagrams/ Given an array of strings, group anagrams together. For exam ...

  3. 【一天一道LeetCode】#49. Group Anagrams

    一天一道LeetCode系列 (一)题目 Given an array of strings, group anagrams together. For example, given: [" ...

  4. [LeetCode] Group Anagrams 群组错位词

    Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...

  5. LeetCode解题报告—— Group Anagrams & Pow(x, n) & Spiral Matrix

    1. Group Anagrams Given an array of strings, group anagrams together. For example, given: ["eat ...

  6. LeetCode 49: 字母异位词分组 Group Anagrams

    LeetCode 49: 字母异位词分组 Group Anagrams 题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. Given an array o ...

  7. [LeetCode] 49. Group Anagrams 分组变位词

    Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...

  8. 【LeetCode】49. Group Anagrams 解题报告(Python & Java & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序+hash 日期 题目地址:https://le ...

  9. LeetCode - 49. Group Anagrams

    49. Group Anagrams Problem's Link ------------------------------------------------------------------ ...

随机推荐

  1. svn树冲突的解决方法

    树冲突 就是开发人员移动.重命名.删除一个文件或文件夹,而另一名开发人员也对它们进行了移动.重命名.删除或者仅仅是修改时就会发生树冲突.有很多种不同的情形可以导致树冲突,而且不同的情形需要不同的步骤来 ...

  2. 本地使用js或jquery操作cookie在谷歌浏览器chrome中不生效

    一般是在本地调试cookie,无论使用jquery cookie插件还是js原生态cookie方法,在谷歌浏览器chrome中都不生效,这是什么原因? 原因是: chrome不支持js在本地操作coo ...

  3. hadoop之定制自己的sort过程

    Key排序 1. 继承WritableComparator 在hadoop之Shuffle和Sort中,可以看到mapper的输出文件spill文件需要在内存中排序,并且在输入reducer之前,不同 ...

  4. C++ 函数 参数传递方式

    用函数调用所给出的实参(实际参数,actual arguments)向函数定义给出的形参(形式参数,formal arguments)设置初始值的过程,叫做参数传递(Argument Passing) ...

  5. 使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)

    1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip ...

  6. 作业1-MathExam

    MathExam 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 30 • Estim ...

  7. Servlet 3.0对上传的支持

    Servlet 2.5 进行上传   首先对表单的要求     ->method ="post"    ->enctype="multipart/form-d ...

  8. 学习pl/sql之一

    --使用pl/sql语句打印一个hello world begin   dbms_output.put_line('hello,world'); end;      但是在sqlplus里面就不一样了 ...

  9. Beta Scrum Day 2 — 听说

    听说

  10. 【贪心算法】POJ-3262

    一.题目 Description Farmer John went to cut some wood and left N (2 ≤ N ≤ 100,000) cows eating the gras ...