读书人

校园杯的一道关于字符串压缩的题 看看

发布时间: 2012-03-21 13:33:15 作者: rapoo

校园杯的一道关于字符串压缩的题 看看大家有什么好的算法 谢啦
大家有什么好的算法 谢谢分享!最好能将完整的程序写下来 让小弟膜拜一下


2、字符串压缩(30分)

l 问题描述

将给定的字符串,按照规格压缩,输出压缩后的字符串。压缩规格为:相同字符连续,则压缩为“字符+数字个数”,如”aaaa”压缩为”a4”

注:

1、仅是单个字符连续才压缩,如babababa则不能压缩

2、待压缩字符串中不包含数字和转义符

l 要求实现函数

void CompressStr(const char *SrcStr, char *DstStr)

【输入】SrcStr: 待压缩的字符串

【输出】DstStr: 压缩后的字符串

【返回】无

l 示例

输入:SrcStr =”aaacccddef”

输出:DstStr=”a3c3d2ef”



[解决办法]

C/C++ code
#include <stdio.h>void CompressStr(const char *SrcStr, char *DstStr){    int i = 0, j = 0, count;    char ch;        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 main(){     char srcStr[100] = "aaacccddef";    char dstStr[100];    CompressStr(srcStr, dstStr);    printf("%s\n", dstStr);    getchar();    return 0;}
[解决办法]
探讨
C/C++ code


#include <stdio.h>
void CompressStr(const char *SrcStr, char *DstStr)
{
int i = 0, j = 0, count;
char ch;
while(SrcStr[i] != '\0')
{
DstStr[j] = SrcS……

读书人网 >C语言

热点推荐