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);
}
}
本文介绍了一种用于压缩字符串的方法,并提供了正确的实现代码示例。该方法通过统计相邻重复字符的数量来压缩原始字符串,同时指出了使用字符数组进行计数时可能出现的问题及解决方案。
8万+

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



