题二:题目描述(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>
#include<string>
using namespace std;
int main()
{
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int t=1;
        for(int j=i+1;j<s.size();j++)
        {
            if(s[j]==s[i])
                ++t;
        }

        if(t>1)
        {
            s.erase(i+1,t-1);
            char p[10];                 //VC6.0不能用to_string;
            itoa(t,p,10);
            s.insert(i,p);
        }
    }

    cout<<s<<endl;

return 0;
}

 

posted on 2015-05-16 21:53  三人纷纷  阅读(430)  评论(0编辑  收藏  举报