- Encoding
- Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
- Total Submission(s): 51785 Accepted Submission(s): 23041
- Problem Description
- Given a string containing only 'A' - 'Z', we could encode it using the following method:
- 1. Each sub-string containing k same characters should 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.
- 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 10000.
- Output
- For each test case, output the encoded string in a line.
- Sample Input
- 2 ABC ABBCCC
- Sample Output
- ABC A2B3C
- Author
- ZHANG Zheng
- #include<iostream>
- #include<algorithm>
- #include<cstdio>
- #include<cstring>
- #include<set>
- #include<map>
- #include<sstream>
- #include<queue>
- #include<cmath>
- #include<list>
- #include<vector>
- #include<string>
- using namespace std;
- #define long long ll
- const double PI = acos(-1.0);
- const double eps = 1e-6;
- const int inf = 0x3f3f3f3f;
- const int N = 500005;
- int n, m, tot;
- int a[N];
- map<string,int> mp;
- int main()
- {
- int t;
- cin>> t;
- string s;
- while(t--)
- {
- int c = 1;
- cin>> s;
- for(int i=0; i<s.size(); i++)
- {
- if(s[i+1]==s[i]){
- c++;
- }
- else{
- if(c==1){
- printf("%c",s[i]);
- c = 1;
- }
- else{
- printf("%d%c",c,s[i]);
- c = 1;
- }
- }
- }
- cout<<endl;
- }
- }
来源: http://www.bubuko.com/infodetail-2548946.html