(Good topic)单词的压缩编码(leetcode3.28每日打卡)
输出: 10
说明: S = "time#bell#" , indexes = [0, 2, 5] 。
1 <= words.length <= 2000
1 <= words[i].length <= 7
每个单词都是小写字母 。
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4
5 int Cmp(const void* a, const void* b)
6 {
7 char* s1 = *(char**)a;
8 char* s2 = *(char**)b;
9
10 return strcmp(s1, s2);
11 }
12
13 int minimumLengthEncoding(char** words, int wordsSize)
14 {
15 if (words == NULL || wordsSize == 0)
16 {
17 return 0;
18 }
19 int i, j,res = 0;
20 int totalLen = 0;
21 int* size = (int*)calloc(wordsSize, sizeof(int));
22 char t[9] = { 0 };
23
24 for (i = 0; i < wordsSize; i++) //每个字符串逆序
25 {
26 int len = strlen(words[i]);
27 for (j = 0; j < len / 2; j++)
28 {
29 char t = words[i][j];
30 words[i][j] = words[i][len-j-1];
31 words[i][len-j-1] = t;
32 }
33 }
34 qsort(words, wordsSize, sizeof(char*), Cmp); //字符串字典序排序
35 /*for (i = 0; i < wordsSize-1; i++) //冒泡排序
36 {
37 for (j = 0; j < wordsSize - 1 - i; j++)
38 {
39 if (strcmp(words[j], words[j + 1]) > 0)
40 {
41 strcpy(t, words[j]);
42 strcpy(words[j], words[j + 1]);
43 strcpy(words[j + 1], t);
44 }
45 }
46 }*/
47
48 for (i = 0; i < wordsSize; i++) //总长度,并记录每个串个长度
49 {
50 size[i] = strlen(words[i]);
51 totalLen += size[i];
52 }
53 totalLen += wordsSize; //加所有的'#'
54
55 for (i = 0; i < wordsSize - 1; i++)
56 {
57 if (strncmp(words[i], words[i + 1], size[i]) == 0)
58 {
59 totalLen -= (size[i] + 1);
60 }
61 }
62 free(size);
63 return totalLen;
64 }
65
66 int main(void)
67 {
68 char** s;
69 int num;
70 s = (char **)malloc(sizeof(char*) * 6);
71 for (int i = 0; i < 6; i++)
72 {
73 s[i] = (char *)malloc(sizeof(char) * 10);
74 }
75 strcpy(s[0], "time");
76 strcpy(s[1], "lime");
77 strcpy(s[2], "hell");
78 strcpy(s[3], "sometime");
79 strcpy(s[4], "shell");
80 strcpy(s[5], "me");
81
82 num = minimumLengthEncoding(s, 6);
83 printf("%d", num);
84 return 0;
85 }
(Good topic)单词的压缩编码(leetcode3.28每日打卡)的更多相关文章
- Java实现 LeetCode 820 单词的压缩编码(暴力)
820. 单词的压缩编码 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", & ...
- Java实现 LeetCode 820 单词的压缩编码(字典树)
820. 单词的压缩编码 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", & ...
- leetcode之820. 单词的压缩编码 | python极简实现字典树
题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...
- 2018/1/28 每日一学 单源最短路的SPFA算法以及其他三大最短路算法比较总结
刚刚AC的pj普及组第四题就是一种单源最短路. 我们知道当一个图存在负权边时像Dijkstra等算法便无法实现: 而Bellman-Ford算法的复杂度又过高O(V*E),SPFA算法便派上用场了. ...
- [Swift]LeetCode820. 单词的压缩编码 | Short Encoding of Words
Given a list of words, we may encode it by writing a reference string S and a list of indexes A. For ...
- python set() leetcode 签到820. 单词的压缩编码
题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...
- 【LeetCode】820. 单词的压缩编码 Short Encoding of Words(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode-cn.com/problems/short- ...
- 2018/03/28 每日一个Linux命令 之 mkdir/rmdir
用于建立空文件夹和删除文件夹 -- 两命令重要参数 -p 递归建立/删除 -- 例如 mkdir -p demo1/demo2/demo3 建立demo3空文件夹,如果demo1/demo2没建立也建 ...
- P1664 每日打卡心情好
题目背景 在洛谷中,打卡不只是一个简单的鼠标点击动作,通过每天在洛谷打卡,可以清晰地记录下自己在洛谷学习的足迹.通过每天打卡,来不断地暗示自己:我又在洛谷学习了一天,进而帮助自己培养恒心.耐心.细心. ...
- (leetcode每日打卡)秋叶收藏集【动态规划】
LCP 19.秋叶收藏集 题目链接 算法 动态规划 时间复杂度O(n) 1.题目要求最终形成[红.黄.红]三部分,每部分数量可以不相等,问最终调整操作数量最小是多少.这道题一开始考虑暴力去做,枚举两个 ...
随机推荐
- eclipse module-info.java文件
module 本模块的名称{ exports 对外暴露的包路径; requires 需要依赖的其他模块名称; } module-info.java不是类,不是接口,是一些模块描述信息.module也不 ...
- sudo提权操作
sudo提权操作 sudo sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登录 ...
- [故障处理]WindowsServer休眠后黑屏
情况 Windows Server 2016休眠后无法被远程桌面,现场连接显示器也是黑屏.直连显示器的情况下,有时候长按 ctrl键能亮屏. 处理步骤 先扫描是否有系统文件损坏:Dism /Onlin ...
- 最常用的Linux命令
1. tar 创建一个新的tar文件 $ tar cvf archive_name.tar dirname/ 解压tar文件 $ tar xvf archive_name.tar 查看tar文件 $ ...
- SpringBoot 启动流程追踪(第二篇)
上一篇文章分析了除 refresh 方法外的流程,并着重分析了 load 方法,这篇文章就主要分析 refresh 方法,可以说 refresh 方法是 springboot 启动流程最重要的一环,没 ...
- Web通用漏洞--sql注入
SQL注入 mysql注入目的:获取当前web权限 mysql注入--常规查询&union联合查询 MYSQL--Web组成架构 服务器搭建web服务可能存在多个站点搭建在一台服务器中,数据集 ...
- 《Web安全基础》01. 基础知识
@ 目录 1:概念名词 1.1:域名 1.2:DNS 1.3:网站开发语言 1.4:后门 1.5:Web 1.6:Web 相关安全漏洞 2:数据包 2.1:HTTP 2.2:HTTPS 2.3:请求数 ...
- 一个.NET 7 + DDD + CQRS +React+Vite的实战项目
项目简介 基于SignalR实现聊天通信,支持横向扩展,可支撑上万用户同时在线聊天 后端架构 后端技术栈采用 .NET 7 PostgreSQL (业务数据库) Redis(用于存放热点数据,和支持S ...
- 不关闭Tamper Protection(篡改保护)下强制卸载Windows Defender和安全中心所有组件
个人博客: xzajyjs.cn 背景介绍 由于微软不再更新arm版本的win10系统,因此只能通过安装insider preview的镜像来使用.而能找到的win10 on arm最新版镜像在安装之 ...
- MIMO雷达中波形复用/分离的方法------TDMA\FDMA\DDMA\CDMA
最先接触到MIMO雷达的波形复用/分离的方法还是工作中负责的TI1843项目中了解的,主要还是时分多址波形(TDMA),当时刚接触时对这些很疑惑,再加上后面看到了频分多址波形(FDMA).码分多址波形 ...