Encoding
Time Limit: 2000/1000 MS (Java/others) memory limit: 65536/32768 K (Java/Others)
Total submission (s): 25691 accepted submission (s): 11289
Problem descriptiongiven a string containing only 'a'-'Z', We cocould encode it using the following method:
1. Each sub-string containing K same characters shoshould be encoded to "kx" where "X" is the only character in this sub-string.
2. if the length of the sub-string is 1, '1' should be ignored.
Inputthe first line contains an integer N (1 <= n <= 100) which indicates the number of test cases. the next n lines contain N strings. each string consists of only 'a'-'Z' and the length is less than 10000.
Outputfor each test case, output the encoded string in a line.
Sample Input
2ABCABBCCC
Sample output
ABCA2B3C
Simple question.
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int M = 10000 + 50;char str[M];char a[M];int b[M];int main(){ int n; int t=0; int p; int i; scanf("%d", &n); while( n-- ) { t=0; p=0; memset(str, 0, sizeof(str)); scanf("%s", str); a[t]=str[0]; for(i=0; i<strlen(str); i++) { if(str[i]==str[i+1]) p++; else { b[t]=p; t++; a[t]=str[i+1]; p=0; } } for(i=0; i<t; i++) { if(b[i]>0) printf("%d%c", b[i]+1, a[i]); else printf("%c", a[i]); } printf("\n"); } return 0;}