华为机试——字符串压缩(stringZip)
2013-08-04 17:21
337 查看
/* 二、题目描述(40分): 通过键盘输入一串小写字母(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> using namespace std; void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr) { int count = 1; int j = 0; for(int i = 0;i < lInputLen;i++) { if((pInputStr[i] != '\0') && (pInputStr[i] == pInputStr[i+1])) { count++; } else { if(count >1) //count>1的情况. { pOutputStr[j++] = (char)(count + '0');//注意将int型转化为char型表示. pOutputStr[j++] = pInputStr[i]; count = 1; } else //count等1的情况. pOutputStr[j++] = pInputStr[i]; } } pOutputStr[j] = '\0'; } int main() { char input[20] = "cccddecc"; char output[20]; stringZip(input,20, output); cout << output << endl; char input1[20] = "adef"; char output1[20]; stringZip(input1,20, output1); cout << output1 << endl; char input2[20] = "pppppppp"; char output2[20]; stringZip(input2,20, output2); cout << output2 << endl; return 0; }
相关文章推荐
- 华为机试——字符串压缩(stringZip)
- [Zlib]_[初级]_[使用zlib库压缩和解压字符串STL string]
- 2014华为机试题-字符串压缩
- 华为2012.09.03浙大机试题 去掉字符串中的重复字符,字符串中重复字符的压缩,根据输入计算字符串结果
- 使用java.util.zip对字符串进行压缩和解压缩
- 华为机试---字符串的压缩处理
- 字符串WebService上先zip压缩再base64编码后传输
- 华为 压缩字符串
- 华为字符串压缩程序
- 字符串压缩(华为)
- 将一个字符串按照zip方式压缩和解压缩
- 使用java.util.zip对字符串进行压缩和解压缩
- 华为2014年机试题【字符串压缩】-【C语言/C++】
- 1-华为招聘--软件工程师上机考试--字符串过滤,字符串压缩,整数运算
- 华为2014年校园招聘机试——字符串过滤、压缩
- 华为(C++实现字符串压缩程序)
- 华为机试之字符串压缩问题
- 2014华为校园招聘机试——字符串过滤、压缩等
- 华为机试——字符串过滤&字符串压缩
- 华为2014年机试题【字符串压缩】-【C语言/C++】