HDU 1020 - Encoding
注意 字母个数可以是两位数以上
这时候就要按位操作了
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]='\0'; 49 printf("%s\n",ans); 50 } 51 }
我自倾杯,君且随意