HDU 1020

注意 字母个数可以是两位数以上

这时候就要按位操作了

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 int n,len,len2,cnt;
 6 int num[10];
 7 char s[10005],ans[10005],p;
 8 int main()
 9 {
10     scanf("%d",&n);
11     while(n--)
12     {
13         scanf("%s",&s);
14         len=strlen(s);
15         len2=0;
16         p=s[0]; cnt=1;
17         for(int i=1;i<len;i++)
18         {
19             if(s[i]!=s[i-1])
20             {    
21                 if(cnt>1)
22                 {
23                     int len3=0;
24                     while(cnt)
25                     {
26                         num[len3++]=cnt%10;
27                         cnt/=10;
28                     }
29                     for(int i=len3-1;i>=0;i--) ans[len2++]=num[i]+'0';
30                 }
31                 ans[len2++]=p;
32                 p=s[i]; cnt=1;
33             } else {
34                 cnt++;
35             }
36         }
37         if(cnt>1)
38         {
39             int len3=0;
40             while(cnt)
41             {
42                 num[len3++]=cnt%10;
43                 cnt/=10;
44             }
45             for(int i=len3-1;i>=0;i--) ans[len2++]=num[i]+'0';
46         }
47         ans[len2++]=p;
48         ans[len2]='';
49         printf("%s
",ans);
50     }
51 } 
我自倾杯,君且随意
原文地址:https://www.cnblogs.com/nicetomeetu/p/5422949.html