例如, 有一表示颜色像素值的字符串RRRRRGGBBBBBB,用 RLE 压缩方法压缩后可用 5R2G6B 来代替,显然后者的串长度比前者的串长度小得多。译码时按照与编码时采用的相同规则进行, 还原后得到的数据与压缩前的数据完全相同。因此, RLE 是无损压缩技术。
输入
输入的第一行是一个整数N表示有N组测试数据。接下来N行,每行都有一个字符串。(由小写字母组成且长度小于1000)
输出
编码后的字符串。样例输入
2 aabbbb iiiiillllovvveeeeeeeaaaccccccccmmmmmmmmmm
样例输出
2a4b 5i4l1o3v7e3a8c10m
#include <stdio.h> #include <string.h> int main(){ char s[1000]; char s1[500]; int count=1,n1=0; int num[100],n; scanf("%d",&n); for(int k=0;k<n;k++){ scanf("%s",s); for(int i=0;i<strlen(s);i++){ if(s[i]==s[i+1]) count++; else{ num[n1]=count; s1[n1]=s[i]; n1++; count=1; } } num[n1]=-1; s1[n1]='['; n1++; } for(int j=0;j<n1;j++){ if(num[j]!=-1) printf("%d%c",num[j],s1[j]); else printf("\n"); } return 0; }