PTA7-67简码

分数 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;
 }
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

green qwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值