(Good topic)压缩字符串 (3.16 leetcode每日打卡)
输出:"a2b1c5a3"
示例2:
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
提示:
1.首先int型转化为char型 需要整型+48然后强制类型转换
2.然后运行不对,原因就是没有初始化定义的压缩数组,于是全部初始为'0',要养成初始化数组的好习惯
3.结果仍然不对,上编译器调试,于是发现字符串末尾需要用'\0'截断,不然会出现乱码
4.然后个数小于十的通过了,依然不对,原因就是因为还有个数是多位数的,数字的长度不仅仅是小于10,想了好久该怎样把大于十的整型放入字符串,于是我用了itoa函数,没想到出现编译错误,上网上查了一下是因为itoa是window特有的,于是改为了sprintf函数
5.我想这下总该对了,错误,原因就是压缩后的字符串可能比50000还长,这个是一开始没有想到的,于是改成了500000
1 char* compressString(char* S)
2 {
3 int i, len;
4 int cnt = 1;
5 int j = -1;
6 char dealS[500000];
7 memset(dealS, '0', 500000);
8
9 char ch = S[0];
10 for (i = 0; S[i]; i++); //测量长度 其实可以用strlen
11 len = i;
12 if (len == 1)
13 return S;
14 for (i = 1; i < len+1; i++) //len+1是为了防止还没等压缩就因为到了末尾而跳出遍历了了
15 {
16 if (ch == S[i])
17 {
18 cnt++;
19 }
20 else
21 {
22 dealS[++j] = ch;
23 if (cnt < 10) //判断计数器大于还是小于0
24 {
25 dealS[++j] = (char)(cnt + 48);
26 }
27 else
28 {
29 char buffer[25];
30 sprintf(buffer, "%d", cnt);
31 for (int k = 0; buffer[k]; k++)
32 {
33 dealS[++j] = buffer[k];
34 }
35 }
36
37 ch = S[i];
38 i--;
39 cnt = 0;
40 }
41 }
42
43 dealS[++j] = '\0';
44 return strlen(dealS) < strlen(S) ? dealS : S;
45 }
(Good topic)压缩字符串 (3.16 leetcode每日打卡)的更多相关文章
- (leetcode每日打卡)秋叶收藏集【动态规划】
LCP 19.秋叶收藏集 题目链接 算法 动态规划 时间复杂度O(n) 1.题目要求最终形成[红.黄.红]三部分,每部分数量可以不相等,问最终调整操作数量最小是多少.这道题一开始考虑暴力去做,枚举两个 ...
- [LeetCode] Design Compressed String Iterator 设计压缩字符串的迭代器
Design and implement a data structure for a compressed string iterator. It should support the follow ...
- 【python】Leetcode每日一题-扰乱字符串
[python]Leetcode每日一题-扰乱字符串 [题目描述] 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行 ...
- Java实现 LeetCode 443 压缩字符串
443. 压缩字符串 给定一组字符,使用原地算法将其压缩. 压缩后的长度必须始终小于或等于原数组长度. 数组的每个元素应该是长度为1 的字符(不是 int 整数类型). 在完成原地修改输入数组后,返回 ...
- 【JavaScript】【dp】Leetcode每日一题-解码方法
[JavaScript]Leetcode每日一题-解码方法 [题目描述] 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> 1 'B' -> 2 ... 'Z' -& ...
- 【JavaScript】【KMP】Leetcode每日一题-实现strStr()
[JavaScript]Leetcode每日一题-实现strStr() [题目描述] 实现 strStr() 函数. 给你两个字符串 haystack 和 needle ,请你在 haystack 字 ...
- 【python】Leetcode每日一题-前缀树(Trie)
[python]Leetcode每日一题-前缀树(Trie) [题目描述] Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的 ...
- 【python】Leetcode每日一题-最大数
[python]Leetcode每日一题-最大数 [题目描述] 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数. 注意:输出结果可能非常大,所以你需要返回一个 ...
- 【python】Leetcode每日一题-最长公共子序列
[python]Leetcode每日一题-最长公共子序列 [题目描述] 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . ...
- 【python】Leetcode每日一题-颠倒二进制位
[python]Leetcode每日一题-颠倒二进制位 [题目描述] 颠倒给定的 32 位无符号整数的二进制位. 示例1: 输入: 00000010100101000001111010011100 输 ...
随机推荐
- npm 切换源
切换到淘宝源 npm config set registry https://registry.npm.taobao.org 切换回官方源 npm config set registry http:/ ...
- Linux学习环境搭建(VMware虚拟机安装Linux)
企业现状 目前绝大多数企业运维人员的工作环境都是Windows下通过SSH工具(如XShell等)远程连接千百里外的服务器进行管理和维护的. 而且学Linux运维,99.9%知识与硬件无关,用虚拟机足 ...
- 因为此网站发送了 Google Chrome 无法处理的杂乱凭据
原文地址 thisisunsafe this is unsafe 这是不安全的,呵呵~ 具体描述 在chrome该页面上,直接键盘敲入这11个字符:thisisunsafe (鼠标点击当前页面任意位置 ...
- 五 Android Capabilities讲解(转)
1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...
- 【go笔记】标准库-strings
标准库-strings 前言 标准库strings用于处理utf-8编码的字符串. 字符串比较-Compare func Compare(a,b string) int 若 a==b ,则返回0:若 ...
- 数据结构之B树
1 引言 B-tree,B即Balanced,是自平衡的多叉搜索树,用于组织和存储大量数据,以及数据库和文件系统等需要高效查找和插入操作的应用中. 为什么是"大量数据"?当主存不足 ...
- 2023-08-10:景区里有m个项目,也就是项目数组为int[][] game,这是一个m*2的二维数组 景区的第i个项目有如下两个参数: game[i] = { Ki, Bi } Ki一定是负数,
2023-08-10:景区里有m个项目,也就是项目数组为int[][] game,这是一个m*2的二维数组 景区的第i个项目有如下两个参数: game[i] = { Ki, Bi } Ki一定是负数, ...
- Mybatis框架的搭建和基本使用
本文总结最原始Mybatis框架的搭建和最基本使用(不涉及Spring框架体系). 1 依赖 首先,我们要引入Mybatis依赖: <dependency> <groupId> ...
- 代替forever下一个部署node的持久化工具---pm2
最近有个后端项目,用的是node,在持久化的时候会挂掉,详细了解到用的是nohup,然后先详细了解了一下nohup nohup是一个Linux命令,用于在系统后台不挂断地运行命令,退出终端不会影响程序 ...
- SqlServer修改表字段类型
if not exists (select 1 from syscolumns where name='字段名' and id=OBJECT_ID('表名') and 条件) begin alter ...