题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805262018265088
思路:分成两类,解压和被解压。解压的时候字符串中只有字母和空格,只要设置一个加法器数一数相邻相同的就好了。被解压时字符串中有字母、空格、数字。特殊点在于数字,设置一个加法器,将该数字从string转化成int就好了,如果该加法器数字不变依然为零的话就设置为一。再来一重循环输出数字后面的字母或空格就好了。
#include <iostream>
#include <string>
using namespace std;
void conde()
{
string s;
getline(cin, s);
int len = s.length();
for(int i = 0; i < len; i++)
{
char q;
q = s[i];
int cn = 0;
while(q == s[i])
{
cn++;
i++;
}
if(cn > 1)
cout<<cn;
cout<<q;
i--;
}
return;
}
void decom()
{
string s;
getline(cin, s);
int len = s.length();
for(int i = 0; i < len; i++)
{
int cn = 0;
while(s[i] >= '0' && s[i] <= '9')
{
cn = cn * 10 + (s[i] - '0');
i++;
}
if (cn == 0)
cn = 1;
while(cn--)
cout<<s[i];
}
return;
}
void solve()
{
char p;
cin>>p;
cin.ignore();
if(p == 'C')
conde();
else if(p == 'D')
decom();
cout<<endl;
return;
}
int main()
{
solve();
return 0;
}
20分一般,理清思路就好了
2018年9月18日 14:11:51