写一个函数实现字符串的压缩存储,实现如下 求解!

xdx2ct1314 2013-08-13 11:57:24
4、 写一个函数实现字符串的压缩存储,函数原型为 void fun(char *str),假设输入字符串只含字母,压缩方式为:如果字符串中出现连续相同字符,则存储为字符的重 复次数+字符本身,如果字母不连续出现,则存储源字符,例如:strStr = “ABBCCCDBB”, 则压缩后的字符串为 “A2B3CD2B”。
...全文
475 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
2郎神 2015-11-21
  • 打赏
  • 举报
回复
7楼你的程序有bug 字符串赋值完后,后面一定要记得加上结束符\0 要不然显示的时候字符串后面会乱码的,
「已注销」 2013-08-14
  • 打赏
  • 举报
回复
void f(char *str) { char *des=malloc(100*sizeof(char)); char *s=des; int cnt=0; while(*str) {cnt++; str++; if(*str!=*(str-1)) { *des=*(str-1); des++; *des=cnt+0x30; des++; cnt=0; } } printf("%s",s); } void main() { char *str = "ABBCCCDBB"; f(str); }
「已注销」 2013-08-14
  • 打赏
  • 举报
回复
void f(char *str) { char *des=malloc(100*sizeof(char)); char *s=des; int cnt=0; while(*str) {cnt++; str++; if(*str!=*(str-1)) { *des=*(str-1); des++; *des=cnt; cnt=0; } } printf("%s",s); } void main() { char *str = "ABBCCCDBB"; f(str); }
「已注销」 2013-08-14
  • 打赏
  • 举报
回复
des=malloc(100*sizeof(char)); cnt=0; while(*str) {cnt++; str++; if(*str!=*(str-1)) { *des=*(str-1); des++; *des=cnt; cnt=0; } }
大尾巴猫 2013-08-14
  • 打赏
  • 举报
回复
这个比较简单,应该自己先尝试做一下,做的不对了再把代码贴出来,让别人帮你一起修改。
Code研究者 2013-08-14
  • 打赏
  • 举报
回复
这道题属于基本题,两层循环,第二层循环里判断当前元数后面有几个与当前元数相同,并记录个数cnt,然后第一层循环里的计数变量跳过cnt+1,重复直至最后,代码不提交了,自己写写,很简单
max_min_ 2013-08-14
  • 打赏
  • 举报
回复
地址一个一个移动遍历操作,出现相邻位置出现相同的添加标示量标示个数! 然后复写到一个buf里! 不是很难
xdx2ct1314 2013-08-14
  • 打赏
  • 举报
回复
经验证,正解答案如下(谢谢各位的帮忙): #include <stdio.h> #include <malloc.h> void f(char *str) { char *des=(char *)malloc(100*sizeof(char)); char *s=des; int cnt=0; while(*str) { cnt++; str++; if(*str!=*(str-1)) { if (cnt !=1) { *des=cnt+0x30; des++; } *des=*(str-1); des++; cnt=0; } } printf("%s",s); } void main() { char *str = "ABBCCCDBB"; f(str); }

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧