蓝桥杯 ADV-301 算法提高 字符串压缩

算法提高 字符串压缩

时间限制:1.0s   内存限制:256.0MB

问题描述
  编写一个程序,输入一个字符串,然后采用如下的规则对该字符串当中的每一个字符进行压缩:
  (1) 如果该字符是空格,则保留该字符;
  (2) 如果该字符是第一次出现或第三次出现或第六次出现,则保留该字符;
  (3) 否则,删除该字符。
  例如,若用户输入“occurrence”,经过压缩后,字符c的第二次出现被删除,第一和第三次出现仍保留;字符r和e的第二次出现均被删除,因此最后的结果为:“ocurenc”。
  输入格式:输入只有一行,即原始字符串。
  输出格式:输出只有一行,即经过压缩以后的字符串。
输入输出样例

样例输入

occurrence

样例输出

ocurenc

#include <iostream>
#include <map>

using namespace std;

int main()
{
    string input, output("");
    map<char, int> stat;

    getline(cin, input);
    for (int i = 0; i < input.length(); ++i)
    {
        if (input[i] == ' ')
        {
            output += input[i];
            continue;
        }

        if (stat.find(input[i]) != stat.end())
            stat[input[i]]++;
        else
            stat[input[i]] = 1;
        if (stat[input[i]] == 1 || stat[input[i]] == 3 || stat[input[i]] == 6)
            output += input[i];
    }
    cout << output;

    return 0;
}
发布了298 篇原创文章 · 获赞 43 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/liulizhi1996/article/details/104224807