码迷,mamicode.com
首页 > 其他好文 > 详细

【2014】 字符串(2)

时间:2014-06-12 11:47:29      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

题目描述(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”

bubuko.com,布布扣
    void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)
    {
        
       int Ref,subLen;
       int j = 0;
       for(long i=0;i<lInputLen;)
       {
         subLen = 1;
         Ref = i;
         while(pInputStr[++i]==pInputStr[Ref])
         {
            subLen++;
         
         }
        
         if(subLen>1)
         {
            //char L= subLen + 0x30; // 作为整数型的subLen对应的ASCII码值应该是:subLen + 0x30(因为1对应的ASCII是0x31)
                                     //此招只适用于0-9的整形转换成ASCII,如果大于9就不灵了
            //pOutputStr[j++] = L;
             char p[20];
             itoa(subLen,p,10);   //把整形subLen按十进制数转换的字符串存在指针p中
             strcpy(pOutputStr+j,p);
             j += strlen(p);
         }
         pOutputStr[j++] = pInputStr[Ref];

       }
       pOutputStr[j]=\0;
    
    }
bubuko.com,布布扣

 

【2014】 字符串(2),布布扣,bubuko.com

【2014】 字符串(2)

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/Xylophone/p/3782455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!