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;
}
正解
#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;
}