题目描述
字符串压缩有一种简单的方法,就是直接统计连续出现的字符的个数,然后用一个数字+一个字符代替,比如aaa会被代替为3a,bbbb会被代替为4b。
现在我给你一个串,求它用这个方法压缩过后的串。
输入
包含多组数据。第一行是一个整数N,表示样例的个数。以后每行为一个样例,为一个仅仅包含小写字母的字符串,长度不超过1000;
输出
每组数据输出一行,为压缩过后的串。
样例输入
2
aaabbbb
ddreeeeeeeeee
样例输出
3a4b
字符串压缩有一种简单的方法,就是直接统计连续出现的字符的个数,然后用一个数字+一个字符代替,比如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; }