字符串压缩算法

题目描述:

输入一串字符,请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。
例如:
aac 压缩为 1ac
xxxxyyyyyyzbbb 压缩为 3x5yz2b

输入描述:

任意长度字符串

输出描述:

压缩后的字符串

输入样例:

xxxxyyyyyyzbbb

输出样例:

3x5yz2b

解题思路:

小红书19年校招题,这道题在刷PAT乙级的时候有写到过类似的题:【PAT乙级】字符串压缩与解压。题中所说的字符串压缩其实就是无脑遍历字符串,将字符串中的重复部分进行替换。将一个重复出现的字符子串替换成(某个字符重复出现的次数-1 + 该重复字符)。

AC代码:

#include 
using namespace std;

int main()
{
    string str;
    getline(cin, str);
    for(int i = 0; i < str.length(); i++)   //遍历字符串
    {
        int cnt = 0;   //用来记录重复字符数量
        while(str[i] == str[i+1])   //判断是不是字符串中的重复字符
        {
            i++;
            cnt++;
        }
        if(cnt != 0)
        {
            cout << cnt;   //先输出压缩的字符个数
        }
        cout << str[i];   //再输出被压缩的字符
    }
    return 0;
}

 

你可能感兴趣的:(C++,字符串,小红书)