华为机试——字符串压缩
2016-01-12 16:28
495 查看
字符串压缩
通过键盘输入一串小写字母(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”
通过键盘输入一串小写字母(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”
#include<iostream> #include<cstring> const int N=100; using namespace std; void stringZip(const char *pInputStr, long InputLen, char *pOutputStr); int main() { char input ; char *output=new char[strlen(input)+1];//为字符串数组分配地址 //int len=0; cin.getline(input,N); //len=strlen(input); stringZip(input,strlen(input),output); cout<<output; delete output; return 0; } void stringZip(const char *pInputStr, long InputLen, char *pOutputStr) { const char *p=pInputStr;//必须把常量指针const char*赋给常量指针 int i=0,j,num=1; p++; while(*p!=NULL)//总循环遍历 { while(*p==*(p-1) && *p!=NULL)//后向遍历比较 { num++; p++; } if(num>1) { int size=0; int temp; temp=num; while(num)//计算num的位数 { size++; num/=10; } for(j=size;j>0;j--)//倒序存储数字num的每一位,字符的位数 { pOutputStr[i+j-1]=temp%10+'0'; temp/=10; } i+=size;//存储字符 pOutputStr[i++]=*(p-1); p++; num=1; } else { pOutputStr[i++]=*(p-1); p++; } } pOutputStr[i++]=*(p-1); pOutputStr[i]='\0'; }
相关文章推荐
- 常用控件:03_004 ScrollView嵌套ListView实现和其替代方法
- Android获取Activity(应用)的执行状态及其它信息
- 第八章 方法
- Android碎片(Fragment)简述
- Unity3D安卓打包参数配置与兼容性的关系分析
- 事务的隔离级别
- 那些不能遗忘的知识点回顾——C/C++系列(笔试面试高频题)
- redis索引的设计
- windows7下启动mysql服务名无效
- 浅谈Java类加载顺序
- Laravel添加事务
- python 工具pip的安装
- iOS Run Loop
- iOS唯一标示符引导
- 学会使用makefile:3
- springMVC参数的传递方式
- CDI进阶第九步 模板注解
- 三阶魔方还原
- iOS分享【OC】—— UITableView 的 cell 自适应
- 框架操作DOM和原生js操作DOM比较