王和兴老师嫌弃ZZW平时说话过于啰嗦,扔给他一套说话转换法。
给定一个只包含“a”-“Z”的字符串,我们可以使用以下方法对其进行编码:
1。每个包含k个相同字符的子字符串都应该编码为“kX”,其中“X”是该子字符串中唯一的字符。
2。如果子字符串的长度是1,则应忽略’1’。
输入
第一行包含一个整数N (1 <= N <= 100),它表示测试用例的数量。接下来的N行包含N个字符串。每个字符串仅由“A”-“Z”组成,长度小于10000。
输出
对于每个测试用例,在一行中输出编码的字符串。
样例输入
2
ABC
ABBCCC
样例输出
ABC
A2B3C
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define ll long long
#define mes(x,y) memset(x,y,sizeof(x))
using namespace std;
int main(){
int n;
while(cin>>n){
while(n--){
string a;
cin>>a;
long len=a.length();
a[len]='a';
long sum=1;
vector<char>v;
vector<long>ww;
for(int i=1;i<=a.size();i++){
while(a[i]==a[i-1]){
sum++;
i++;
}
ww.push_back(sum);
v.push_back(a[i-1]);
sum=1;
}
for(int i=0;i<v.size();i++){
if(ww[i]>1){
cout<<ww[i]<<v[i];
}
else{
cout<<v[i];
}
}
cout<<endl;
}
}
return 0;
}