分数 20
**作者 DS课程组单位 **
临沂大学
小明有一串很长的英文字母,可能包含大写和小写。在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母+出现次数的形式。例如,连续的5个a,即 aaaaa,简写成 a5。对于这个例子:aaaaaCCeeelHH,小明可以简写成 a5C2e3lH2。为了方便表达,小明不会将连续的超过9个相同的字符写成简写的形式。现在给出一串字符串,请帮助小明完成简写。
输入格式:输入一行为一个由大写字母和小写字符构成的字符串,长度不超过100000。
输出格式:输出为一行字符串,表示简写后的字符串。
输入样例:
aaaaaCCeeelHH
输出样例:
a5C2e3lH2
代码长度限制16 KB
时间限制2000 ms
内存限制64 MB
#include<stdio.h>
#include<string.h>
int main(){
char ch[100001];
gets(ch);
int a[128]={0};
for(int i=0;i<strlen(ch);i++){
a[ch[i]]++;
if(a[ch[i]]>9&&ch[i]!=ch[i+1]){
for(int j=0;j<a[ch[i]];j++)
printf("%c",ch[i]);
a[ch[i]]=0;
continue;
}
if(ch[i]!=ch[i+1]){
if(a[ch[i]]==1){
printf("%c",ch[i]);
}else{
printf("%c%d",ch[i],a[ch[i]]);
}
a[ch[i]]=0;
}
}
return 0;
}