字符串的压缩【百度】
题目如下:
通过键盘输入一串小写字母(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
字符串的压缩【百度】相关推荐
- java压缩传输_简单实现字符串的压缩,减轻传输压力
首先说下字符串的压缩的大概意思:比如一字符串"asdfjsdffffffssddsfsdssss",其中有很多相邻的字符是相同的,那么可以通过一个合并,并记录个数的方式,来进行压缩 ...
- Java利用Gzip对字符串进行压缩与解压
在某些业务场景下,可能需要对字符串进行压缩与解压,压缩字符串可以使用 GZIPOutputStream 输出流来实现,而解压可以使用 GZIPInputStream 输入流来实现,下面先给出具体的参考 ...
- C++字符串的压缩和解压(初学者的)
对于初学者的我来说,面对c语言心总有一点惶恐和不安,经过对函数的摔打和锤炼,已不再是懵懵懂懂的大菜鸟,已升级为小菜鸟,今天面的c++来说,我并不是很打怵,今天我要分享一下自己对解压和压缩的一些心得和代 ...
- 使用java.util.zip对字符串进行压缩和解压缩
/** * 压缩字符串为 byte[] * 储存可以使用new sun.misc.BASE64Encoder().encodeBuffer(byte[] b)方法 * 保存为字符串 * * @para ...
- 字符串GZIP压缩解压
c# /// <summary>/// 字符串压缩解压/// </summary>public class Zipper{public static string Compre ...
- 算法 - 赫夫曼编码(对字符串进行压缩 与 解压(解码)) - (对文件进行压缩解压)
1.压缩:使用赫夫曼编码进行压缩 题目 构建赫夫曼树 package tree.huffmantree;import java.util.*;public class HuffmanCode {pub ...
- C#关于base64图片字符串的压缩方法
文章目录 介绍 具体实现 总结 介绍 最近有项目遇到图片以二进制的形式存储到数据库中,但是需要以base64字符串的形式通过接口传到前端进行展示,但是有个图片流很大,会造成接口很慢或者直接超时报错.由 ...
- pythonzip压缩字符串_Python压缩与解压缩ZIP文件的实现方法
这篇文章主要介绍了Python实现压缩和解压缩ZIP文件的方法,结合具体实例形式分析了Python操作zip文件压缩与解压缩的常用操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现压缩和解 ...
- [BZOJ4416][Shoi2013]阶乘字符串 状态压缩dp
诶一直感觉这个数字特别大的时候会无解 然而一直没有把这个数算出来,觉得可能是大于一个数无解小于一个数暴力 然而看题解发现这个数字是2121 正解先特判nn是否大于2121,若大于puts no 否则进 ...
最新文章
- set list词频排序java_Hadoop WordCount改进实现正确识别单词以及词频降序排序 | 学步园...
- Windows 8计算机管理器怎么打开?
- div与span区别及用法
- php环境搭建5.6_WIN8.1下搭建PHP5.6环境
- js网页返回页面顶部的小方法
- MySQL高级 - SQL优化 - or优化
- appium学习记录1
- 渲染上下文Rendering Context
- (10)vue.js 指令(2)
- linux判断字符串命令行,bash – 将命令行参数与字符串进行比较
- 前端js实现打印excel表格
- 详细Gitee(码云)使用方法
- UI设计需要用到哪些软件工具呢?
- 面试官:内存耗尽后Redis会发生什么 ?
- 数据可视化:基本图表
- MFC双人五子棋(VS2019)
- 计算机内存和外存的主要区别是什么,计算机的存储系统一般有内存和外存,试述内存与外存的主要区别。...
- 系统性能优化的十大策略(强烈推荐,建议收藏)
- controller注解使用 resultful
- 5G/NR 5G核心网(5GC)之网络功能服务通信