压缩字符串

给定一组字符,使用原地算法将其压缩。

压缩后的长度必须始终小于或等于原数组长度。

数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。

在完成原地修改输入数组后,返回数组的新长度。

示例1:

输入:["a","a","b","b","c","c","c"]
输出:返回6,输入数组的前6个字符应该是:["a","2","b","2","c","3"]
说明:
"aa"被"a2"替代。"bb"被"b2"替代。"ccc"被"c3"替代。

示例2:

输入:["a"]
输出:返回1,输入数组的前1个字符应该是:["a"]
说明:
没有任何字符串被替代。

示例3:

输入:["a","b","b","b","b","b","b","b","b","b","b","b","b"]
输出:返回4,输入数组的前4个字符应该是:["a","b","1","2"]。
说明:
由于字符"a"不重复,所以不会被压缩。"bbbbbbbbbbbb"被“b12”替代。
注意每个数字在数组中都有它自己的位置。

注意:

1.所有字符都有一个ASCII值在[35, 126]区间内
2.1 <= len(chars) <= 1000
int compress(char* chars, int charsSize) {if (charsSize == 1) {return 1;}int i;int j = 0;int n = 1;int sum = 1;for (i = 1; i < charsSize; i++) {if (i == charsSize - 1) {if (chars[i] == chars[i - 1]) {n++;while (n > 0) {j++;n /= 10;}return sum + j;}else {while (n > 0) {j++;n /= 10;}return sum + j + 1;}}if (chars[i] == chars[i - 1]) {n++;}else if (chars[i] != chars[i - 1] ) {if (n == 1) {sum++;}else if (n > 1) {while (n > 0) {j++;n /= 10;}sum = sum + j;n = 1;}}}return sum;
}

C语言--压缩字符串相关推荐

  1. HART协议数据格式避坑(C语言压缩字符串Packed-ASCII和ASCII转换)

    HART协议数据格式避坑(C语言压缩字符串Packed-ASCII和ASCII转换) 首先HART数据格式如下: 重点就是浮点数和字符串类型 Latin-1就不说了 基本用不到 浮点数 浮点数里面 如 ...

  2. 算法 C语言 压缩字符串

    题目 给定一个字符数组chars,请使用下述算法压缩: 1.如果这个字符长度位1,直接返回 2.否则以字符+个数的形式 压缩后得到的字符出不直接返回,需要直接转储到字符数组chars中,返回该数组的新 ...

  3. c语言向字符串追加一个字符串,C语言字符串拼接和追加.doc

    C语言字符串拼接和追加.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  4. 字符串压缩 java_如何在Java中压缩字符串?

    如何在Java中压缩字符串? 我使用GZIPOutputStream或ZIPOutputStream压缩字符串(我的2222235278130938882小于20),但压缩结果比原始字符串长. 在某个 ...

  5. Java 缩小字符串( Compact String)和 压缩字符串(Compressed String)

    正如我们在上面文章提到的内容,在英文语境中上面 2 个方法还是有区别的,在中文环境下主要表达就是字符串压缩. JDK 6 使用的压缩字符串方法,主要原因是我们修改了 String 的存储结构,char ...

  6. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

  7. B00009 C语言分割字符串库函数strtok

    切割字符串是常用的处理. 这里给出一个使用函数strtok切割字符串的例子. 使用C语言的库函数strtok来切割字符串的好处在于,可以指定任意字符作为分隔符来切割单词.使用该函数,切割字符串的分隔符 ...

  8. C语言比较字符串长短

    C语言比较字符串长短 #include <stdio.h> #include <string.h>char *strlong(char *str1, char *str2) { ...

  9. Swift3.0语言教程字符串与URL的数据转换与自由转换

    Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...

最新文章

  1. Python之路【第七篇】:初识Socket
  2. CSDN×易观算法大赛火热进行中~
  3. inurl news.php id,news.php
  4. 搭建maven的私服nexus
  5. java--Date时间
  6. 华三 h3c STP生成树保护配置
  7. MySQL服务端恶意读取客户端文件漏洞 (DDCTF2019和国赛均涉及到这个漏洞)
  8. 查找算法之三 插值查找(C++版本)
  9. ArcGIS操作小技巧(七)之制作漂亮的萤火虫图
  10. 解压tar.gz文件与tar.bz2文件
  11. gcc -l:手动添加链接库
  12. stc15f2k60f2单片机定时器_STC15F2K60S2系列
  13. 身体传感器 android,小米人体传感器手机客户端-小米人体传感器app下载v4.3.11 安卓版-西西软件下载...
  14. MapGuide源代码结构
  15. UrlRewrite
  16. svn: E155007: 'XXX' is not a working copy
  17. cocos2dx-lua 圆周运动
  18. Vins_mono重力对齐理解
  19. 人工智能三大核心技术
  20. 计算机如何增加网络地址,如何添加网络打印机到电脑

热门文章

  1. React-Native集成极光推送(Android和IOS)
  2. 猿人学第五题-乱码增强(油猴hook禁用频繁日志、扣代码易错点)
  3. 验证码工具之Kaptcha
  4. 【矩阵论-20220919(1.1)——数域、线性空间定义和基本性质】
  5. 《Adobe After Effects CS6完全剖析》——正确的设置
  6. 复数四则运算(精简)
  7. 高数 李永乐 第一章
  8. 详细介绍 BSD 开源协议
  9. 办公文档被误删如何用EasyRecovery恢复
  10. paip 网站扫描安全工具hp WebInspect 使用指南