昨天参加WPS的笔试时,有一道题是要求写一个函数实现字符串压缩,举个例子:

输入:aaabbccccc

输出:a3b2c5

当时总想着怎么把输入的字符串str改写成输出那压缩形式,如果要修改字符串的话需要考虑的问题比较多:

定义一个int count对重复的字符进行计数,结束重复时要如何将这个count转换成char类型加入字符串?个位数的重复比较简单,如果一个字符的重复是十位数百位数千位数呢?

是要重新定义一个字符串还是在原字符串修改呢?如果是重新定义字符串还要考虑该局部函数在结束的时候数组也会跟着被销毁的问题。如果是在原字符串修改的话在处理无连续重复的字符时也需要谨慎处理。

总之,要考虑的问题如此之多,在这么短的笔试时间内,这种费时费力的思路应该早早放弃才对,而昨天就是对以上的问题进行死磕,导致时间不够用,结果很不理想。

接下来是另一种思路,简单粗暴!题目要求只是一个输出,那就直接边计数边printf输出好了,完全抛弃对字符串做修改或者新建一个字符串的老路。

这样的话代码就变得十分简短了:

#include <stdio.h>
#define N 100void compress(char str[]);void main(void){char str[N];printf("Enter a string:\n");scanf("%Ns", str);compress(str);
}void compress(char str[]){int i = 0, cnt = 1;while(str[i] != '\0'){if(str[i+1] == str[i])cnt++;else{printf("%c%d", str[i], cnt);cnt = 1;}i++;}printf("\n");
}

测试如下:

这样或许达不到在内存中的压缩效果,反正题目中没要求,或许出题的意图也只是想要视觉上的压缩效果而已。

转载于:https://blog.51cto.com/lanchaohuan/1563103

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

  1. C语言字母的压缩,C语言字符串快速压缩算法代码

    C语言字符串快速压缩算法代码 大家知道C语言字符串快速压缩算法是怎么样的吗?下面小编为大家整理了C语言字符串快速压缩算法代码,希望能帮到大家! 通过键盘输入一串小写字母(a~z)组成的字符串. 请编写 ...

  2. 字符串解压缩c语言除哈夫曼,C语言实现压缩二例(示例代码)

    一 简单字符串压缩 编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1.仅压缩连续重复出现的字符.比如字符串"abcbc"由于无连 ...

  3. 【ELT.ZIP】OpenHarmony啃论文俱乐部——人工智能短字符串压缩

    本文出自ELT.ZIP团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英. 成员: 上海工程技术大学大二在校生 合肥师范学院大二在校生 清华大学大二在校生 ...

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

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

  5. 【ELT.ZIP】OpenHarmony啃论文俱乐部——快速随机访问字符串压缩

    本文出自ELT.ZIP团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英. 成员: 上海工程技术大学大二在校生 合肥师范学院大二在校生 清华大学大二在校生 ...

  6. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc

    数据结构C语言字符串的基本操作 串的基本操作 #include #include #include #define m 100 typedef struct{ char ch[m]; int leng ...

  7. c语言中的字符串总是以,C语言字符串的结束标志是什么?

    多级反馈队列调度算法详解 通常在使用多级队列调度算法时,进程进入系统时被永久地分配到某个队列.例如,如果前台和后台进程分别具有单独队列,那么进程并不从一个队列移到另一个队列,这是因为进程不会改变前台或 ...

  8. C语言字符串输出函数puts()的作用是什么

    C语言字符串输出函数puts()的作用: puts()在显示字符串时会自动在其末尾添加一个换行符. puts()遇到空字符时就停止输出,所以必须确保有空字符. 下面两个示例分别说明puts()的两个特 ...

  9. 【华为机试真题 C++】一种字符串压缩表示的解压-100

    [编程题目 |100分]一种字符串压缩表示的解压[2021 H2, 2022 Q1考试题] 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C/C++262144K,其他语言524288K 64 ...

最新文章

  1. C# DataGridView 的UserDeletingRow事件,删除
  2. XamarinSQLite教程在Xamarin.Android项目中提取数据库文件
  3. 线性回归与梯度下降法——原理与实现
  4. Android中实现APP文本内容的分享发送与接收方法简述
  5. 【目标检测】ICCV21_TOOD: Task-aligned One-stage Object Detection
  6. 数据脱敏和加密_Apache ShardingSphere数据脱敏全解决方案详解
  7. 一个网站大概多少钱_建一个外贸网站大概需要多少钱?角点科技总结建外贸网站的费用...
  8. 长连接和端连接 心跳包机制
  9. Ubuntu 下安装 GCC 的方法
  10. C语言修行中(2)学习了分支和循环结构
  11. pdf.js 跨域 php,JavaScript_js跨域资源共享 基础篇,本文详细介绍了javascript跨域资 - phpStudy...
  12. macbook pro忘记开机密码怎么办
  13. GIS就业参考系列之方向篇——条条大道通罗马
  14. [通信技术]Iub接口协议——专用传输信道(DCH)的用户平面协议
  15. 包络线公式如何用计算机求,包络线公式
  16. 《自然语言处理实战入门》 深度学习组件TensorFlow2.0 ---- 文本数据建模流程
  17. 【前端微服务化】使用飞冰搭建前端微服务化框架
  18. 播放器实战 10 像素格式与尺寸的转换
  19. 【scala】练习题
  20. 【Vue知识点】——Vue2和Vue3的数据劫持

热门文章

  1. Vs2010无法打开文件“Kernel32.lib”、无法打开“libcpmt.lib”msvcprt.lib
  2. Google 开源图形着色器测试框架 GraphicsFuzz
  3. [转载]MIT牛人解说数学体系
  4. IBM Storwize V7000 Introduction(1)
  5. WinAPI: Ellipse - 绘制椭圆
  6. ORACLE -- ORA-12520
  7. NDK集成libjpeg和libpng
  8. linux下的nginx+php+mysql
  9. 3750交换机简要配置手册(中文)
  10. Python:使用pypdf2合并、分割、加密pdf文件。