您的位置:首页 > 其它

HDU 1020 Encoding 典型的字符串的压缩

2012-08-10 20:55 483 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1020

例如 AAAAEEEECCCCCAAA 则输出 4A4E5C3A的结果                        

//切记如果用字符数组统计个数 一位字符最多统计的个数为9个,超过9个就变成两个字符来统计的了。

post code:

正确代码

#include<stdio.h>
#include<string.h>
char a[110000];
int main()
{
int n,len,i,sum;
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
len=strlen(a);
for(i=0;i<len;i++)
{
sum=1;
while(a[i]==a[i+1])  //判断重复的字符串个数
{
sum++;
i++;
}
if(sum!=1){printf("%d",sum);printf("%c",a[i]);} //输出重复的个数和重复的字母
else {printf("%c",a[i]);}
}
printf("\n");
}
}


开始时自己写的错误程序:

自己一开始的这个程序错误之处:

#include<stdio.h>
#include<string.h>
char a[110000];
char b[110000];
int main()
{
int n,len,i,sum,j;
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
len=strlen(a);
j=0;
for(i=0;i<len;i++)
{
sum=1;
while(a[i]==a[i+1])
{
sum++;
i++;
}
if(sum!=1){b[j]=sum+'0';j++;b[j]=a[i];j++;} //***这就是错误的位置 用字符数组统计个数
//最多只能是9个 超出九个 就变成两个字符了
else {b[j]=a[i];j++;}
}
b[j]='\0';
printf("%s\n",b);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: