第一题:通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
下面是我写的代码:
1 #include <iostream> 2 3 using namespace std; 4 5 void stringZip(const char *pInputStr,long linputLen,char *pOutputStr) 6 { 7 char ccount = '0'; 8 int i = 0; 9 const char *pPoint1 = pInputStr; 10 const char *pPoint2 = pInputStr; 11 12 //判断指针是否为空 13 if(pInputStr == NULL) 14 { 15 pOutputStr = NULL; 16 return ; 17 } 18 for(i=0;i < linputLen;) 19 { 20 ccount = '0'; 21 while((*pPoint1)==(*pPoint2)) 22 { 23 i++; //控制循环 24 ccount ++; 25 pPoint2 ++; 26 } 27 //跳出循环赛说明两个指针所指的字符开始不相等 28 if(ccount > '1') *pOutputStr++ = ccount; 29 *pOutputStr++ = *pPoint1; 30 pPoint1 = pPoint2; 31 } 32 *pOutputStr = '