通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
2016-08-16 11:31
1391 查看
#include<iostream> /* 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。 要求实现函数: void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr: 输入字符串 lInputLen: 输入字符串长度 【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:“cccddecc” 输出:“3c2de2c” 输入:“adef” 输出:“adef” 输入:“pppppppp” 输出:“8p” */ using namespace std; void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr) { for (int i = 0; i < lInputLen; ) { int count = 0; //for (char j = 'a'; j < 'a' + 26; j++) if (pInputStr[i]<'a' || pInputStr[i]>'z') { *pOutputStr = pInputStr[i]; i++; } else { char temp = pInputStr[i]; while (pInputStr[i]==temp) { count++; i++; } if (count > 1) { *pOutputStr = '0' + count; pOutputStr++; } *pOutputStr = pInputStr[i - 1]; pOutputStr++; count = 0; } } } void main() { char a[] = "pppppppp"; long len = strlen(a); char *p = new char[len+1]; memset(p, 0, len + 1); stringZip(a, len, p); cout <<"压缩后字符串:"<< p<<endl; //system("pause"); cin.get(); }
相关文章推荐
- VS2015中运行ASPX老项目出错HTTP Error 500.23 - Internal Server Error错误
- HTTP的请求方法OPTIONS
- typedef与复杂声明
- Fucking "pkg-config not found"
- jquery星级评分
- 36匹马赛跑,选出前三名的次数
- Button设置透明度和简单形状
- ubuntu 12.04不知道root密码,修改密码
- OpenSceneGraph实现的NeHe OpenGL教程 - 第一课
- SQL 存储过程 传入数组参数
- th:each
- JMX学习笔记(一)-MBean
- VS2015中运行ASPX老项目出错HTTP Error 500.23 - Internal Server Error错误
- cpufreq 之conservative governe的实现
- 记载我学习go的过程(二)
- mysql多表结果合并查询
- JSP返回上一页,不刷新
- 生成随机数
- ASP.NET MVC5网站开发之用户角色的后台管理1(七)
- React 组件之间 事件调用(父组件调用子组件)