校园杯的一道关于字符串压缩的题 看看大家有什么好的算法 谢啦
大家有什么好的算法 谢谢分享!最好能将完整的程序写下来 让小弟膜拜一下
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;}
[解决办法]