地址
http://acm.hdu.edu.cn/showproblem.php?pid=1020
定位
水题
字符串处理
分析
- 将重复字符编码成
nX的形式,一遍循环即可。
代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int T;
int n,i;
char str[10000];
scanf("%d",&T);
getchar();
while(T--)
{
memset(str,0,sizeof(str));
gets(str);
n = 1;
i = 1;
while(str[i] != '\0')
{
if(str[i] == str[i-1])
{
n++;
}
else
{
if(n != 1)
{
printf("%d",n);
}
printf("%c",str[i-1]);
n = 1;
}
i++;
}
if(n != 1)
{
printf("%d",n);
}
printf("%c",str[i-1]);
n = 1;
printf("\n");
}
}
性能
| Exe.Time | Exe.Memory | Code Length | Language |
|---|---|---|---|
| 0MS | 1420K | 782B | c |
总结
判断字符串结尾
c语言中,不论是用scanf("%s",&str)读取一个字符串还是用gets(str)读取一行,都不能直接获知字符串的规模。因存在越界访问的风险,c11标准中弃用或标记过时了部分库函数。
目前OJ多采用c99标准,允许使用这些函数。
然而,这些函数处理效率很高,小心使用就可以规避风险。c语言会在字符串的结尾自动添加\0,以标记结束。在处理字符串时,可以通过比较\0判断字符串结尾。
应保证字符串变量(字符数组/字符指针)的存储空间足够,否则不会自动添加
\0。
Thanks everyone
本文介绍了一道经典的字符串处理题目——字符串压缩问题,并提供了一个简洁的C语言解决方案。通过遍历输入的字符串,该算法将连续重复的字符进行计数并编码为nX形式,有效地实现了字符串的压缩。
317

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



