浙江广厦大学第七届程序设计比赛 F-压缩文章

29 阅读1分钟

F-压缩文章_浙江广厦大学第七届程序设计比赛 (nowcoder.com)

我是这样写的,结论乱七八糟:

#include<bits/stdc++.h>
using namespace std;

unordered_map<char, int> mp;

int main()
{
    char s[128];
    cin.getline(s, 128); // 修改此处为cin.getline以读取字符串,包括空格

    int len = strlen(s);

//    for(int i=0;i<len;i++)cout<<s[i];
//    cout<<endl;
    
    
    for (int i = 0; i < len; i++)
    {
        mp[s[i]]++;
    }

    for (auto it = mp.begin(); it != mp.end(); it++)
    {
        
		char c=it->first;
		int cnt=it->second;
		
		
		if (isdigit(c))
        {
            cout << c;
        }
        else
        {
            if (cnt == 1)
            {
                cout << c;
            }
            else
            {
                cout << cnt << c;
            }
        }
    }
    return 0;
}

image.png

正解

#include<bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	
	getline(cin,s);
	s+=" ";
	int cnt=1;
	char t=s[0];
	for(int i=1;i<s.size();i++)
	{
	  if(s[i]==s[i-1]) cnt++;
	  else 
	  {
	  	cout<<cnt<<t;
	  	cnt=1;
	  	t=s[i];
	  }
	  	
    }
	return 0;
}