Group Anagrams - LeetCode
题目链接
注意点
- 字母都是小写的
解法
解法一:用一个字符串表示strs[i]中出现的字母,比如:abc->111000000000000000000000000、aab->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;
}
};

解法二:abc与bac的区别只在于顺序不同,因此,只要对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的更多相关文章
- 49. Group Anagrams - LeetCode
Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List&l ...
- leetcode@ [49] Group Anagrams (Hashtable)
https://leetcode.com/problems/anagrams/ Given an array of strings, group anagrams together. For exam ...
- 【一天一道LeetCode】#49. Group Anagrams
一天一道LeetCode系列 (一)题目 Given an array of strings, group anagrams together. For example, given: [" ...
- [LeetCode] Group Anagrams 群组错位词
Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...
- LeetCode解题报告—— Group Anagrams & Pow(x, n) & Spiral Matrix
1. Group Anagrams Given an array of strings, group anagrams together. For example, given: ["eat ...
- LeetCode 49: 字母异位词分组 Group Anagrams
LeetCode 49: 字母异位词分组 Group Anagrams 题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. Given an array o ...
- [LeetCode] 49. Group Anagrams 分组变位词
Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...
- 【LeetCode】49. Group Anagrams 解题报告(Python & Java & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序+hash 日期 题目地址:https://le ...
- LeetCode - 49. Group Anagrams
49. Group Anagrams Problem's Link ------------------------------------------------------------------ ...
随机推荐
- C/S结构与B/S结构
按照是否需要访问网络,程序可分为网络程序与非网络程序.其中网络程序又可分为B/S结构与C/S结构. C/S结构是指客户端(Client)/服务器(Server)模式,这种模式的客户端中 需要安装一个R ...
- 零基础学python之入门和列表数据(附详细的代码解释和执行结果截图)
Python学习笔记 1 快速入门 下载安装好Python之后,在开始找到 双击打开一个窗口,这是一个shell界面编辑窗口,点击左上角的file——new file新建一个窗口,这里可以输入完整的代 ...
- 多个EXCEL文件合并成一个
Python的numpy处理起来会比较方便,有空实现一下,这里是Excel内部代码的方式: 合并方法如下: 1.需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel.如图 ...
- 【转载】pycharm常用快捷键
来源: (https://blog.csdn.net/weixin_41059146/article/details/78826163) 1.编辑(Editing) Ctrl + Space 基 ...
- ubuntu 相关软件设置
软件篇 1. 网易云音乐软件 首先去官网下载网易云音乐客户端linux版,网址:http://music.163.com/#/download,选择linux版本,然后选择ubuntu 16.04(6 ...
- Mysql数据库的四大特性
Mysql数据库事务的四大特性(ACID) 事务:把一组密不可分的操作系列集合在一起,这些操作要么全部执行,要么全部不执行. 1.原子性:事务是内定义的操作是一个整体,是不可分割的. 2.一致性:事务 ...
- webpack开发和生产两个环境的配置详解
一开始在接触webpack 的时候,简直痛不欲生,现在回头看,做个注释,当然参考了很多文章.这是一个关于vue 开发的webpack 架构会列举出来webpack 系列教程Webpack——令人困惑的 ...
- Django_信号
目录 Django信号介绍 Django内置信号 信号种类 信号注册 自定义信号 实测 内置信号 自定义信号 Django信号介绍 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲 ...
- Vue 入门之概念
Vue 简介 Vue 是一个前端的双向绑定类的框架,发音[读音 /vjuː/, 类似于 [view].新的 Vue 版本参考了 React 的部分设计,当然也有自己独特的地方,比如 Vue 的单文件组 ...
- Description Resource Path Location Type Cannot change version of project fac
http://www.cnblogs.com/eaysun/p/5661631.html