
最开始的想法是创建vector
判断字母异位词的方法是建立长度为24,初始化全为0的string,每有一字母就将对应位置加一……(后来才发现有每个字母数量不能大于9的bug)
- class Solution {
- public:
- vector
> groupAnagrams(vector& strs) { - vector
> result; - int n=strs.size();
- for(int i=0;i
- int m=result.size();
- int j=0;
- for(j;j
- vector
a=result[j]; - if(equal(a[0],strs[i])){
- result[j].push_back(strs[i]);
- break;
- }
- }
- if(j==m){
- vector
ss; - ss.push_back(strs[i]);
- result.push_back(ss);
- }
- }
- return result;
- }
- bool equal(string s1,string s2){
- int n1=s1.size();
- int n2=s2.size();
- if(n1!=n2) return 0;
- string ss1(25,'0');
- for(int i=0;i
- ss1[s1[i]-97]++;
- }
- string ss2(25,'0');
- for(int i=0;i
- ss2[s2[i]-97]++;
- }
- if(ss1==ss2) return 1;
- else return 0;
- }
- };
结果是时间超限,看了答案才知道有更好的方法,那就是用map,判断字母异位词也可以直接对string使用sort后进行比较,简洁很多
- class Solution {
- public:
- vector
> groupAnagrams(vector& strs) { - unordered_map
> mp; - int n=strs.size();
- for(int i=0;i
- string str=strs[i];
- sort(str.begin(),str.end());
- mp[str].push_back(strs[i]);
- }
- vector
> result; - for(auto i=mp.begin();i!=mp.end();i++){
- result.push_back(i->second);
- }
- return result;
- }
- };
-
相关阅读:
Spring框架(三)
【JAVA程序设计】基于Springboot+Thymeleaf新闻管理系统
熹微~~~基于Vue开发的昏暗风格的响应式网页!
SwiftUI 动态岛开发教程之 06 如何在 iPhone 14 Pro 中征服动态岛并为您的应用添加支持
在 ABAP 开发工具运行时错误显示界面里植入思否猫
VS2010编译支持openssl的Libcurl
Mysql中完整性约束语法问题
vscode环境配置:附注有参考链接,便于下载软件。
基础Python教程之pandas使用总结
ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析
-
原文地址:https://blog.csdn.net/s478527548/article/details/140401716