Group Anagrams - LeetCode
2024-08-22 15:56:00
题目链接
注意点
- 字母都是小写的
解法
解法一:用一个字符串表示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;
}
};
小结
- 解法二的时间复杂度更高,但是所花时间更少...
最新文章
- 3.bootstrap练习笔记-媒体内容
- echarts X轴数据显示不全问题
- python模块结构和布局
- Hadoop学习过程知识积累
- KM算法专题
- 苹果Swift编程语言新手教程【中文版】
- 解决Nginx的connect() to 127.0.0.1:8080 failed (13: Permission denied) while connect
- JavaScript中的execCommand()命令详解及实例展示
- android项目实战 --ListView 头部ViewPager广告轮询图效果
- 流畅python学习笔记:第十七章:并发处理
- 逆波兰表达式(RPN)算法简单实现
- Django框架的安装
- Java数据结构和算法(十四)——堆
- volatile的适用场景
- Vue之v-for、v-show使用举例
- no plugin found for prefix &#39;tomcat 7&#39; in the current project
- Django:前后端分离后联调给前端传数据
- HRMS(人力资源管理系统)-SaaS架构设计-概要设计实践
- Stencil 基础
- 步步为营-35-SQL语言基础
热门文章
- LeetCode 刷题笔记 155. 最小栈(Min Stack)
- Linux文件句柄数调整
- 打包应用和构建Docker镜像(docker在windows上)
- spring-boot rabbitMq 完整项目搭建,包括创建、发送、监听
- Tomcat java zabbix 监控
- LeetCode 174. Dungeon Game (C++)
- pairwork(黄敬博12061156和黄伟龙12061172)
- BugPhobia开发篇章:Scurm Meeting-更新至0x03
- AloneQIan---第一次作业
- JavaScript实现大整数减法