题目如下:

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。

要求实现函数:
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
输入pInputStr:  输入字符串lInputLen:  输入字符串长度
输出 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
注意:只需要完成该函数功能算法,中间不需要有任何IO的输入输出。

示例输入输出:
输入:“cccddecc”   输出:“3c2de2c”
输入:“adef”     输出:“adef”
输入:“pppppppp” 输出:“8p”

 1 void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr){
 2     long temp=0,d_p=0,repeatCharNum=0,i=0;
 3     char *a=new char[10],* temp2;
 4     bool endingRepeat=false ;
 5     for (;i<lInputLen-1;i++)
 6     {
 7         pOutputStr[d_p++]=pInputStr[i];
 8         if(pInputStr[i]==pInputStr[i+1]){
 9             if(i==lInputLen-2){
10                 endingRepeat=true;
11             }
12             d_p--;
13             repeatCharNum=2;
14             temp=i+1;
15             while(temp<lInputLen-1){
16                 temp++;
17                 if(pInputStr[temp]==pInputStr[i]){
18                     if(temp==lInputLen-1){
19                         endingRepeat=true;
20                     }
21                     repeatCharNum++;
22                 }
23                 else
24                 {
25                     break;
26                 }
27             }
28             itoa(repeatCharNum,a,10);
29             temp2=&a[0];
30             while(*temp2){
31                 pOutputStr[d_p++]=*temp2;
32                 temp2++;
33             }
34             pOutputStr[d_p++]=pInputStr[i];
35             if(temp!=i) i=temp-1;
36         }
37     }
38     if (!endingRepeat)
39     {
40         pOutputStr[d_p++]=pInputStr[i];
41     }
42     pOutputStr[d_p++]=0;
43 }

转载于:https://www.cnblogs.com/havePassed/p/3560043.html

字符串的压缩【百度】相关推荐

  1. java压缩传输_简单实现字符串的压缩,减轻传输压力

    首先说下字符串的压缩的大概意思:比如一字符串"asdfjsdffffffssddsfsdssss",其中有很多相邻的字符是相同的,那么可以通过一个合并,并记录个数的方式,来进行压缩 ...

  2. Java利用Gzip对字符串进行压缩与解压

    在某些业务场景下,可能需要对字符串进行压缩与解压,压缩字符串可以使用 GZIPOutputStream 输出流来实现,而解压可以使用 GZIPInputStream 输入流来实现,下面先给出具体的参考 ...

  3. C++字符串的压缩和解压(初学者的)

    对于初学者的我来说,面对c语言心总有一点惶恐和不安,经过对函数的摔打和锤炼,已不再是懵懵懂懂的大菜鸟,已升级为小菜鸟,今天面的c++来说,我并不是很打怵,今天我要分享一下自己对解压和压缩的一些心得和代 ...

  4. 使用java.util.zip对字符串进行压缩和解压缩

    /** * 压缩字符串为 byte[] * 储存可以使用new sun.misc.BASE64Encoder().encodeBuffer(byte[] b)方法 * 保存为字符串 * * @para ...

  5. 字符串GZIP压缩解压

    c# /// <summary>/// 字符串压缩解压/// </summary>public class Zipper{public static string Compre ...

  6. 算法 - 赫夫曼编码(对字符串进行压缩 与 解压(解码)) - (对文件进行压缩解压)

    1.压缩:使用赫夫曼编码进行压缩 题目 构建赫夫曼树 package tree.huffmantree;import java.util.*;public class HuffmanCode {pub ...

  7. C#关于base64图片字符串的压缩方法

    文章目录 介绍 具体实现 总结 介绍 最近有项目遇到图片以二进制的形式存储到数据库中,但是需要以base64字符串的形式通过接口传到前端进行展示,但是有个图片流很大,会造成接口很慢或者直接超时报错.由 ...

  8. pythonzip压缩字符串_Python压缩与解压缩ZIP文件的实现方法

    这篇文章主要介绍了Python实现压缩和解压缩ZIP文件的方法,结合具体实例形式分析了Python操作zip文件压缩与解压缩的常用操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现压缩和解 ...

  9. [BZOJ4416][Shoi2013]阶乘字符串 状态压缩dp

    诶一直感觉这个数字特别大的时候会无解 然而一直没有把这个数算出来,觉得可能是大于一个数无解小于一个数暴力 然而看题解发现这个数字是2121 正解先特判nn是否大于2121,若大于puts no 否则进 ...

最新文章

  1. set list词频排序java_Hadoop WordCount改进实现正确识别单词以及词频降序排序 | 学步园...
  2. Windows 8计算机管理器怎么打开?
  3. div与span区别及用法
  4. php环境搭建5.6_WIN8.1下搭建PHP5.6环境
  5. js网页返回页面顶部的小方法
  6. MySQL高级 - SQL优化 - or优化
  7. appium学习记录1
  8. 渲染上下文Rendering Context
  9. (10)vue.js 指令(2)
  10. linux判断字符串命令行,bash – 将命令行参数与字符串进行比较
  11. 前端js实现打印excel表格
  12. 详细Gitee(码云)使用方法
  13. UI设计需要用到哪些软件工具呢?
  14. 面试官:内存耗尽后Redis会发生什么 ?
  15. 数据可视化:基本图表
  16. MFC双人五子棋(VS2019)
  17. 计算机内存和外存的主要区别是什么,计算机的存储系统一般有内存和外存,试述内存与外存的主要区别。...
  18. 系统性能优化的十大策略(强烈推荐,建议收藏)
  19. controller注解使用 resultful
  20. 5G/NR 5G核心网(5GC)之网络功能服务通信

热门文章

  1. 《糖豆人:终极淘汰赛》:如何打造最难关卡「水涨爬高」
  2. 游戏与算法的必经之路
  3. 详解计算机内部存储数据的形式 二进制数
  4. mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
  5. 用python输出回文数
  6. hdu3415 单调队列模板题
  7. nyoj13-Fibonacci数
  8. 2017 阿里技术-年度精选
  9. linux下查看机器配置
  10. [转]LESS CSS 框架简介