C语言 | Leetcode C语言题解之第49题字母异位词分组

题目:

题解:

/*1.将字符串原串与副本进行绑定成一个节点2.对字符串副本进行按ascii码表进行从小到大排序3.按照字符串进行比较排序4.合并
*/
typedef struct Node{char*s;char*s_vice;int len;
}Node;void sortShellChar(char*s,int len){for(int distance=len/2;distance!=0;distance/=2){for(int i=distance;i<len;i++){char c=s[i];int pre=i-distance;while(pre>=0&&s[pre]>c){s[pre+distance]=s[pre];pre-=distance;}if(pre+distance!=i){s[pre+distance]=c;}}}
}void sortShellString(Node*arr,int size){for(int distance=size/2;distance!=0;distance/=2){for(int i=distance;i<size;i++){int pre=i-distance;Node node=arr[i];while(pre>=0&&strcmp(arr[pre].s_vice,node.s_vice)<0){arr[pre+distance]=arr[pre];pre-=distance;}if(pre+distance!=i){arr[pre+distance]=node;}}}
}char*** groupAnagrams(char** strs, int strsSize, int* returnSize, int** returnColumnSizes) {Node*strsNode=malloc(sizeof(Node)*strsSize);int strsNodeSize=strsSize;for(int i=0;i<strsSize;i++){strsNode[i].len=strlen(strs[i]);strsNode[i].s=strs[i];strsNode[i].s_vice=malloc(sizeof(char)*( strsNode[i].len+1));strcpy(strsNode[i].s_vice, strsNode[i].s);sortShellChar(strsNode[i].s_vice, strsNode[i].len);}sortShellString(strsNode, strsNodeSize);char***stack=malloc(sizeof(char**)*9869);int top=-1;int start=0;*returnColumnSizes=calloc(9869,sizeof(int));while(start<strsNodeSize){int end=start+1;while(end<strsNodeSize&&strcmp(strsNode[start].s_vice,strsNode[end].s_vice)==0){end++;}char**mergeWords=malloc(sizeof(char*)*(end-start));for(int i=0;i<end-start;i++){mergeWords[i]=strsNode[start+i].s;}stack[++top]=mergeWords;(*returnColumnSizes)[top]=end-start;start=end;}*returnSize=top+1;return stack;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TS类型断言

类型断言&#xff08;Type Assertions&#xff09;在 TypeScript 中确实是一种在表达式级别上临时指定类型的机制&#xff0c;它允许开发者在编译时覆盖编译器的类型推断结果。类型断言有两种语法形式&#xff1a; “尖括号”语法&#xff1a; let someValue: any this is a s…

查找总价格为目标值的两个商品 ---- 双指针

题目链接 题目: 分析: 解法一: 暴力解法, 将每两个的和都算出来, 判断是否为目标值解法二: 数组中的数是按升序排序的, 我们可以定义左右指针 如果和小于目标值, 则应该让和变大, 所以左指针右移如果和大于目标值, 则应该让和变小, 所以右指针左移 思路: 定义left 0, righ…

python学习29:python中的字典dict

python中的字典dict 1.字典的定义&#xff1a; 同样是使用{},不过存储的元素是一个个的&#xff1a;键值对&#xff0c;如下语法&#xff1a; """ 字典的定义&#xff1a; #定义字典字面量&#xff1a;{key:value,key:value,....,key:value} #定义字典变量&am…

每天一个数据分析题(二百九十)——直方图与条形图

关于直方图与条形图的描述&#xff0c;下列说法正确的是&#xff08;&#xff09; A. 直方图用于展示分类型数据的分布情况 B. 直方图用来展示数值型数据的分布情况 C. 条形图只能用于展示顺序型数据的分布情况 D. 条形图只能用于展示分类型数据的分布情况 题目来源于CDA模…

绝地求生【商城更新】WIA联名上架//专属商店下架

大家好&#xff0c;我是闲游盒. 本周商城将在4.24&#xff08;周三&#xff09;更新&#xff0c;商城内容更新如下&#xff1a; 上架物品 ▲W.I.A联名皮肤大礼包 小礼包如下&#xff1a; 包含3套衣服以及MINI、DBS的联名皮肤&#xff0c;3个头饰还挺有特色的&#xff0c;你喜欢…

链栈算法库构建

学习贺利坚老师, 链栈 , 构建链栈算法库 数据结构之自建算法库——链栈_领会链栈结构和掌握链栈中的各种基本算法-CSDN博客文章浏览阅读3.9k次&#xff0c;点赞3次&#xff0c;收藏8次。本文针对数据结构基础系列网络课程(3)&#xff1a;栈和队列中第4课时栈的链式存储结构及其…

安全开发实战(3)--存活探测与端口扫描

目录 安全开发专栏 前言 存活探测 端口扫描 方式一: 1.3.1 One 1.3.2 Two 1.3.3 批量监测 方式二: 1.3.1 One 1.3.2 Two 1.3.3 Three 1.3.4 扫描ip地址,提取出开放端口和协议 ​编辑 1.3.5 批量扫描(最终完成版) 总结 安全开发专栏 安全开发实战​http://t.csd…

数据安全风险评估流程

数据安全风险评估是一个系统性的过程&#xff0c;旨在识别、评估和管理数据安全风险。以下是数据安全风险评估的一般流程及其内容&#xff1a; 确定评估范围&#xff1a;确定评估的范围和目标&#xff0c;包括评估的数据资产、系统、流程和相关方。 收集信息&#xff1a;收集有…

spring mvc \ spring boot \ spring cloud

spring mvc 主要是用作IOC 容器 框架还是传统三层架构 1.容器 依赖注入 CDI 传统web是由beanmanager管理bean的依赖和注入&#xff0c;beanfactory管理bean的创建&#xff0c;以消息进行驱动(HttpSessionListener等) 由框架自行管理 2.IOC 控制反转 bean的创建由开发人员…

leveldb中THREAD_ANNOTATION_ATTRIBUTE__宏的作用

THREAD_ANNOTATION_ATTRIBUTE__ 宏在 LevelDB 或类似的 C 项目中用于指定线程安全相关的源码注解&#xff08;Source Code Annotation&#xff09;&#xff0c;这些注解有助于清晰地表达程序中函数、变量、类型等元素在多线程环境中的行为特征和并发保证。这样的注解不仅有助于…

【zabbix7】新版本尝鲜之connector

zabbix历史版本中&#xff0c;会使用python脚本&#xff0c;把zabbix的告警发送到kafka进行二次处理&#xff0c;或者使用filebeat把zabbix的Export的njson指标数据发送到kafka进行二次处理&#xff0c;然而在zabbix7中新增了新功能connector简化了操作并且可以根据tag进行区分…

【算法刷题day36】Leetcode:435. 无重叠区间、763.划分字母区间、56. 合并区间

文章目录 Leetcode 435. 无重叠区间解题思路代码总结 Leetcode 763.划分字母区间解题思路代码总结 Leetcode 56. 合并区间解题思路代码总结 草稿图网站 java的Deque Leetcode 435. 无重叠区间 题目&#xff1a;435. 无重叠区间 解析&#xff1a;代码随想录解析 解题思路 先按…

Centos Top 30常用命令及详解

在Linux的众多发行版中&#xff0c;CentOS以其稳定性和高效性备受青睐。掌握CentOS的操作对于系统管理员来说至关重要&#xff0c;而熟悉一系列核心命令更是提高工作效率的关键。从文件管理到系统监控&#xff0c;我们精心编制的Top 50常用CentOS命令列表是每位Linux用户的实战…

systemd 强大的初始化系统和服务管理器

在Linux下&#xff0c;systemd 是一个非常强大的初始化系统和服务管理器&#xff0c; 它可以用来管理各种系统服务和进程。如果想要使用 systemd 来监控一个进程&#xff0c; 并在它退出时自动重新启动它&#xff0c;可以为该进程创建一个 systemd 服务单元文件。 以下是如何为…

详解Al作画算法原理

ChatGPT AI作画算法&#xff0c;又称为AI图像生成算法&#xff0c;是一种人工智能技术&#xff0c;它可以根据给定的输入自动生成图像。这类算法近年来变得非常流行&#xff0c;尤其是随着深度学习技术的发展。这里我将聚焦于目前最先进的一类AI作画算法&#xff0c;即生成对抗…

CVE-2022-0543 Redis沙盒逃逸漏洞复现(CVE-2022-0543)

0x01前言 Redis Labs Redis是美国Redis Labs公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值&#xff08;Key-Value&#xff09;存储数据库&#xff0c;并提供多种语言的API。 redis 存在安全漏洞&#xff0c;攻击者可利用该漏洞远程执行代码。…

C++:构造函数与析构函数

目录 构造函数 构造函数的概念 析构函数的作用 自定义构造函数与默认构造函数 自定义构造函数 默认构造函数 调用自定义构造函数 析构函 自定义析构函数和默认构造函数 自定义构造函数 默认析构函数 构造函数 构造函数的概念 我们通常的函数是都需要有返回值的,但…

布局香港之零售小店篇 | 香港一人小企与连锁超市的竞争

近年来&#xff0c;内地品牌入驻香港市场开拓业务已成大势所趋。香港特区政府早前公布的「2023年有香港境外母公司的驻港公司按年统计调查」显示&#xff0c;2023年母公司在海外及内地的驻港公司数量高达9039家。内地品牌在香港的成功落地&#xff0c;不仅为香港市民带来了丰富…

【第3节】“茴香豆“:搭建你的 RAG 智能助理

目录 1 基础知识1.1.RAG技术的概述1.2 RAG的基本结构有哪些呢&#xff1f;1.3 RAG 工作原理&#xff1a;1.4 向量数据库(Vector-DB )&#xff1a;1.5 RAG常见优化方法1.6RAG技术vs微调技术 2、茴香豆介绍2.1应用场景2.2 场景难点2.3 茴香豆的构建&#xff1a; 3 论文快读 1 基础…

react写一个从下往上划出的弹框弹窗组件

arco的弹窗还是不够丰富啊 &#xff0c; 还是自己造吧 。 看着垃圾 &#xff0c; 但可塑性强呀 &#xff0c;拿去改改就能用 &#xff0c; 乱七八糟的ui组件库太多 &#xff0c;轮子还是慢慢造吧 组件的样式使用的是tailwindcss &#xff0c;有需要自查吧 &#xff0c;但大概…