华为2014校园招聘的机试题目解答——字符串压缩
题目来源:JULY博客 http://blog.csdn.net/v_july_v/article/details/11921021
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:输入:“pppppppp” 输出:“8p”
c语言实现如下:
#include <stdio.h>#include <stdlib.h>void stringZip(const char *pInputStr, long iInputLen, char *pOutputStr){const char *tempInput;char *tempOutput;char *temp = (char*)malloc(sizeof(char));long count=0;tempInput = pInputStr;tempOutput = pOutputStr;*temp = *tempInput;tempInput++;count = 1;while(iInputLen){iInputLen--;if (*temp != *tempInput){if (count > 1){char *str = (char*)malloc(sizeof(char));sprintf(str,"%d",count);//将long型计数变量转换为字符串while(*str) //解决long型变量转换为字符串后可能有多位的现象{*(tempOutput) = *str;tempOutput++;str++;}*(tempOutput) = *temp;tempOutput++;}else{*(tempOutput) = *temp;tempOutput++;}*temp = *tempInput;tempInput++;count = 1;}else{count++;tempInput++;}}*tempOutput = '\0';}void main(){char *str = "pxxxxxxxxxxxx";char *output = (char*)malloc(sizeof(str));stringZip(str, 13, output);printf(output);system("PAUSE");}