华为2014校园招聘的机试题目
2013-10-30 10:44
295 查看
通过键盘输入一串小写字母(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”
压缩规则:
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 <stdio.h> #include <string.h> #include <strings.h> void stringZip(const char *pInputStr, long IInputLen, char *pOutputStr) { int count = 1; char temp; char c[100]; int i,j = 0; temp = pInputStr[0]; for(i = 1; i <= IInputLen; i++) { if(temp == pInputStr[i]) { count++; } if((temp != pInputStr[i])) { if(count == 1) { pOutputStr[j] = temp; j++; }else if(count > 1) { memset(c, 0, sizeof(c)); sprintf(c, "%d", count); mempcpy(pOutputStr+j, c, strlen(c)); j += strlen(c); pOutputStr[j] = temp; j++; } count = 1; temp = pInputStr[i]; } } return NULL; } int main(int argc, char* argv[]) { char a[100] = "aaaaaaaaaa"; char b[100]; memset(b, 0, sizeof(b)); stringZip(a, strlen(a), b); printf("%s\n",b); return 1; }
相关文章推荐
- 9月5日,华为2014校园招聘的机试题目
- 2014校园招聘 华为机试题
- 华为2014校园招聘的机试题目解答——字符串压缩
- 华为2014校园招聘的机试题目(回忆)
- 华为机试题-2014校园招聘
- 2014校园招聘之一(8月华为机试题)
- 华为2014校园招聘的机试题目
- 微软2014校园招聘笔试试题
- 腾讯2014校园招聘笔试试题
- 腾讯2014校园招聘软件开发类笔试试题
- 腾讯2014校园招聘笔试试题
- 华为2014校园招聘机试题
- 2014华为校园招聘机试——字符串过滤、压缩等
- 腾讯2014校园招聘笔试试题
- 华为2014校园招聘机试题
- 微软2014校园招聘笔试试题及答案分析
- 2014校园招聘 试题汇总(待更新)
- 微软2014校园招聘笔试试题
- 腾讯 百度 2014校园招聘笔试试题 + 其他2014校招解决题
- 微软2014校园招聘笔试试题