字符串压缩有一种简单的方法,就是直接统计连续出现的字符的个数,然后用一个数字+一个字符代替,比如aaa会被代替为3a,bbbb会被代替为4b。
现在我给你一个串,求它用这个方法压缩过后的串。
输入
包含多组数据。第一行是一个整数N,表示样例的个数。以后每行为一个样例,为一个仅仅包含小写字母的字符串,长度不超过1000;
输出
每组数据输出一行,为压缩过后的串。
样例输入
2
aaabbbb
ddreeeeeeeeee
样例输出
3a4b
2d1r10e
AC代码:
#include<string.h>
#include<iostream>
using namespace std;
int main()
{ int T;
cin>>T;
while(T--)
{ string s,s1;
cin>>s;
int n=s.size();
int i=0,j=1;
while(j<=n)
{ if(s[i]==s[j]) j++;
else if(s[i]!=s[j]||j==n)
{ int k=j-i;
if(k>99&&k<1000)
{ int a=k/100;
s1+=a+'0';
a=(k/10)%10;
s1+=a+'0';
a=k%10;
s1+=a+'0';
}
else if(k>9&&k<=99)
{ int a=k/10;
s1+=a+'0';
a=k%10;
s1+=a+'0';
}
else s1+=k+'0';
s1+=s[i];
i=j;
j++;
}
}
cout<<s1<<endl;
}return 0;
}