Encoding
Time limit: 1 Seconds
Memory limit: 32768K
Given a string containing only 'A' - 'Z', we could encode it using the following method:
- Each sub-string containing k same characters should be encoded to "kX" where "X" is the only character in this sub-string.
- If the length of the sub-string is 1, '1' should be ignored.
1. Input
The 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 100.
2. Output
For each test case, output the encoded string in a line.
3. Sample Input
2 ABC ABBCCC
4. Sample Output
ABC A2B3C
http://acm.zju.edu.cn/show_problem.php?pid=2478
1 /*written by 洪峰 but wa now*/
2
3 #include<iostream>
4 #include<vector>
5 #include<string>
6 using namespace std;
7
8 int main()
9 {
10 char com[26];
11 int i,j,k,n;
12 string s;
13 vector<int> res(26,0),data(26,0);
14 for (i=0;i<26;i++)
15 com[i]=65+i;
16 cin>>n;
17 for (i=0;i<n;i++)
18 {
19 if (n<1||n>100)
20 exit(0);
21 cin>>s;
22 for (j=0;j<s.length();j++)
23 for (k=0;k<26;k++)
24 if (s[j]==com[k])
25 res[k]++;
26 for (j=0;j<26;j++)
27 if (res[j]==1)
28 cout<<com[j];
29 else if (res[j]==0)
30 continue;
31 else
32 cout<<res[j]<<com[j];
33 if (i+1<n)
34 cout<<endl;
35 s.clear();
36 res=data;
37 }
38 system("pause");
39 return 0;
40 }