您的位置:首页 > 其它

hdu1020 - Encoding

2016-12-25 20:28 519 查看

地址

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.TimeExe.MemoryCode LengthLanguage
0MS1420K782Bc

总结

判断字符串结尾

c语言中,不论是用
scanf("%s",&str)
读取一个字符串还是用
gets(str)
读取一行,都不能直接获知字符串的规模。因存在越界访问的风险,c11标准中弃用或标记过时了部分库函数。

目前OJ多采用c99标准,允许使用这些函数。

然而,这些函数处理效率很高,小心使用就可以规避风险。c语言会在字符串的结尾自动添加
\0
,以标记结束。在处理字符串时,可以通过比较
\0
判断字符串结尾。

应保证字符串变量(字符数组/字符指针)的存储空间足够,否则不会自动添加
\0


Thanks everyone
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: