#include <stdio.h>
#include <string.h>
//字符串压缩
void CompressStr(const char *SrcStr, char *DstStr)
{
int i = 0, j = 0, count;
while(SrcStr[i] != '\0')
{
DstStr[j] = SrcStr[i++];
count = 1;
while(DstStr[j] == SrcStr[i])
{
++count;
++i;
}
if(count > 1)
DstStr[++j] = count + '0';
++j;
}
DstStr[j] = '\0';
}
//计算字符串字符重复的最大次数
int count(const char* ch,const int i){
static int num=1;
static int tmp=1;
if(ch[i]=='\0'){
return num>tmp ? num:tmp;
}
if(ch[i]==ch[i-1]){
num++;
}
else {
tmp=num>tmp ? num:tmp;
num=1;
}
return count(ch,i+1);
}
int main()
{
char srcStr[100] = "aaaddefffff";
char dstStr[100];
//gets(srcStr);
CompressStr(srcStr, dstStr);
printf("%s %d %c\n", dstStr,sizeof(dstStr),'a'+1);
printf("max=%d\n", count(srcStr,1));
getchar();
return 0;
}
#include <string.h>
//字符串压缩
void CompressStr(const char *SrcStr, char *DstStr)
{
int i = 0, j = 0, count;
while(SrcStr[i] != '\0')
{
DstStr[j] = SrcStr[i++];
count = 1;
while(DstStr[j] == SrcStr[i])
{
++count;
++i;
}
if(count > 1)
DstStr[++j] = count + '0';
++j;
}
DstStr[j] = '\0';
}
//计算字符串字符重复的最大次数
int count(const char* ch,const int i){
static int num=1;
static int tmp=1;
if(ch[i]=='\0'){
return num>tmp ? num:tmp;
}
if(ch[i]==ch[i-1]){
num++;
}
else {
tmp=num>tmp ? num:tmp;
num=1;
}
return count(ch,i+1);
}
int main()
{
char srcStr[100] = "aaaddefffff";
char dstStr[100];
//gets(srcStr);
CompressStr(srcStr, dstStr);
printf("%s %d %c\n", dstStr,sizeof(dstStr),'a'+1);
printf("max=%d\n", count(srcStr,1));
getchar();
return 0;
}
本文介绍了一种字符串压缩的方法,并实现了一个C语言程序来演示该压缩算法。此外,还提供了一个函数用于计算字符串中字符重复的最大次数。通过具体实例展示了如何使用这些函数。
413

被折叠的 条评论
为什么被折叠?



