字符串压缩有一种简单的方法,就是直接统计连续出现的字符的个数,然后用一个数字+一个字符代替,比如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;
}
本文介绍了一种简单的字符串压缩算法,并提供了完整的C++实现代码。该算法通过统计字符连续出现的次数来实现压缩,适用于仅包含小写字母的字符串,长度不超过1000。文章还包含了具体的输入输出示例。
10万+

被折叠的 条评论
为什么被折叠?



