字符串压缩算法
2013-10-18 16:47
267 查看
如aaabsssc8999kkk,压缩后为3ab3sc8393k
string CompressString(string& source) { const char*cur = source.c_str(); int ilength = strlen(cur) + 1; //这里一定要加1,利用source里的结束符'\0'来保证字节串的结尾是没有重复的字符 if(0 >= ilength) return ""; int number = 1; int pos = 0; char prechar = cur[0]; for(int i=1;i<ilength;i++) { if(prechar == cur[i]) { number++; } else { if(number > 1) { char buffer[20]; sprintf(buffer,"%d%c",number,cur[i-1]); source = source.replace(pos,number,buffer,2); return CompressString(source); //通过递归去压缩剩下的字符串 }else { pos = i; prechar = cur[i]; number = 1; } } } if(1 == number) return source;//没有重复的了,压缩完毕,结束递归 };
相关文章推荐
- 什么是旅游
- Bubble Sort C++
- dB/oct 解释
- BMP基本读取的相关问题
- ssh框架,第一次登录失败则后续登录一直失败
- java bitset
- 用作模糊查询的字段设置哪种索引?
- rqnoj-201-奥运大包围-下降子序列的个数
- UISlider滑块控件
- 职称英语词汇汇总(750个高频词)
- JavaScript DOM编程艺术(第2版)读书笔记
- MSSQLSERVER数据库- 字符串分割函数返回类型表
- Android内存的使用
- JQuery flot API文档 中文版
- Android——自定义Adapter的ListView
- 百度与谷歌地图瓦片组织方式对比
- Spring调用MySql存储过程
- FM Radio项目原创代码
- cortex-M3 GNU开发环境搭建
- 第一篇博客