当前位置:网站首页>49. 字母异位词分组-排序法
49. 字母异位词分组-排序法
2022-08-02 23:56:00 【Mr Gao】
49. 字母异位词分组-排序
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]
解题代码如下:
/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free(). */
int cmp(const void *a,const void *b){
return *((char *)a)- *((char *)b);
}
void quick(char **a,int low,int high ,char **b){
if(low<high){
// printf("%s ",a[high]);
int l=low,h=high;
char *ch=a[low];
char *chb=b[low];
while(low<high){
// / printf("%s ",ch);
while(low<high&&strcmp(a[high],ch)>=0){
// printf("%s ",a[high]);
high--;
}
a[low]=a[high];
b[low]=b[high];
while(low<high&&strcmp(a[low],ch)<=0){
low++;
}
a[high]=a[low];
b[high]=b[low];
}
a[low]=ch;
b[low]=chb;
quick(a,l,low-1,b);
quick(a,low+1,h,b);
}
}
char *** groupAnagrams(char ** strs, int strsSize, int* returnSize, int** returnColumnSizes){
int i;
char **sr=(char **)malloc(sizeof( char *)*strsSize);
char ***re=(char ***)malloc(sizeof(char **)*strsSize);
* returnColumnSizes=(int *)malloc(sizeof(int)*strsSize);
int size=0;
for(i=0;i<strsSize;i++){
sr[i]=(char *)malloc(sizeof(char)*(strlen(strs[i])+1));
strcpy(sr[i],strs[i]);
qsort(strs[i],strlen(strs[i]),sizeof(char),cmp);
}
quick(strs,0,strsSize-1,sr);
char *ch=strs[0];
int index=0;
for(i=1;i<strsSize;i++){
if(strcmp(strs[i],ch)!=0){
int length=i-index;
re[size]=(char**)malloc(sizeof(char *)*length);
// printf("sdf");
(*returnColumnSizes)[size]=length;
int p=0;
for(int j=index;j<i;j++){
re[size][p++]=sr[j];
}
size++;
index=i;
ch=strs[i];
}
}
int length=i-index;
re[size]=(char**)malloc(sizeof(char *)*length);
// printf("sdf");
(*returnColumnSizes)[size]=length;
int p=0;
for(int j=index;j<i;j++){
re[size][p++]=sr[j];
}
size++;
for(i=0;i<strsSize;i++){
printf("%s ",sr[i]);
}
* returnSize=size;
return re;
}
边栏推荐
- 为了面试阿里,熬夜肝完这份软件测试笔记后,Offer终于到手了
- js基础知识整理之 —— 字符串
- 基于飞腾平台的嵌入式解决方案案例集 1.0 正式发布!
- 记一次sql优化Using temporary; Using filesort
- 优秀论文以及思路分析01
- Find My技术|智能防丢还得看苹果Find My技术
- 2022中国眼博会,山东眼健康展,视力矫正仪器展,护眼产品展
- 谷歌 Chrome 浏览器 104 正式版发布:加快网页加载,蓝牙 API 改进
- 嵌入式分享合集26
- Rasa 3.x study series - Rasa - Issues 4792 socket debug logs clog up debug feed study notes
猜你喜欢
[NCTF2019]SQLi-1||SQL注入
js基础知识整理之 —— 五种输出方式
【多线程】线程与进程、以及线程进程的调度
Flink / Scala - 使用 CountWindow 实现按条数触发窗口
What is the matter that programmers often say "the left hand is knuckled and the right hand is hot"?
绿色版-SQL环境搭建
程序员常说的“左手锟斤拷,右手烫烫烫”是怎么回事?
Database auditing - an essential part of network security
Speech Synthesis Model Cheat Sheet (1)
js基础知识整理之 —— 全局作用域
随机推荐
通力传动递交注册:年营收4.7亿 实控人项献忠家族色彩浓厚
D with json
谷歌 Chrome 浏览器 104 正式版发布:加快网页加载,蓝牙 API 改进
稳压电源: 电路图及类型
机电设备制造企业,如何借助ERP系统做好客供料管理?
服务间歇性停顿问题优化|得物技术
十二、form表单的提交
C语言:链表
令人心动的AI综述(1)
【系统架构设计师】第三章 数据库系统
NLP常用Backbone模型小抄(1)
Vite教程 安装
SAP 电商云 Spartacus UI 的持续集成 - Continous integration
RollBack Rx Professional RMC 安装教程
GoLang 使用 goroutine 停止的几种办法
用了TCP协议,就一定不会丢包吗?
典型相关分析CCA计算过程
scala 集合通用方法
厌倦了安装数据库?改用 Docker
秒懂网络拓扑中的下一跳地址