字符串处理的这两种写法有什么区别?
先贴题目!
盐的英文是salt,现在极缺,请找出输入中所有包含salt的行,不管大小写,是salt就要。
Input
若干行包含salt SALT sAlt等等的英文
Output
所有包含salt这个部分的行
Sample Input
Salt is necessary
Water is not sAlt
as salT as you can make it
soy-bean sauce can be saLt
soy-bean sauce only
bean soy-bean sauce
Sample Output
Salt is necessary
Water is not sAlt
as salT as you can make it
soy-bean sauce can be saLt
一下是我的两种写法:
第一种:
#include <stdio.h>
#include <string.h>
int main()
{
while(1)
{
char a[10000]={0};
gets(a);
int flag=0;
int len=strlen(a);
for(int i=0;i<len;i++)
{
if((a[i]=='s'||a[i]=='S')&&(a[i+1]=='a'||a[i+1]=='A')&&(a[i+2]=='l'||a[i+2]=='L')&&(a[i+3]=='t'||a[i+3]=='T'))
{
flag=1;
break;
}
}
if(flag)
puts(a);
}
return 0;
}
以上这种在ACM显示为超时,A不过
第二种:
#include <stdio.h>
#include <string.h>
int main()
{
char a[10000]={0};
while(gets(a))
{
int flag=0;
for(int i=0;i<strlen(a);i++)
{
if((a[i]=='s'||a[i]=='S')&&(a[i+1]=='a'||a[i+1]=='A')&&(a[i+2]=='l'||a[i+2]=='L')&&(a[i+3]=='t'||a[i+3]=='T'))
{
flag=1;
break;
}
}
if(flag)
puts(a);
}
return 0;
}
这种是AC了的
这两者有什么区别?
还有 一般超时是什么原因?
本人新手, 求教!