这是满分代码
#include <stdio.h>
#define MAX_LINE 1000001
#define val(a) (a<'a' ? (a-'A'+'a') : a)
int main()
{
int i=0, j, count=0, first=-1;
char c, w[11], s[MAX_LINE];
scanf("%s", w);
c = getchar();
while((c = getchar()) != EOF && i < MAX_LINE){
if(c == '\n') break;
s[i++] = c;
} s[i] = '\0';
for(i=0,j=0; s[i]!='\0'; ++i){
if((i==0 || s[i-1]==' ' || j) && val(s[i])==val(w[j]) && ++j>-1){
if(w[j]=='\0' && (s[i+1]=='\0' || s[i+1]==' ')){
if(first==-1) first = i+1-j;
count++;
}
}else j=0;
}
if(count==0) printf("-1\n");
else printf("%d %d\n", count, first);
return 0;
}
这是我的代码
#include <stdio.h>
#include <string.h>
int main ()
{
int first =-1;
char c;
char word[11];
char are[1000001];
int cnt=0;
int i,j;
gets (word);
gets (are);
for (i=0;i<strlen(word);i++){
if(word[i]>='A'&&word[i]<='Z'){
word[i]+=32;
}
}
for (int i=0;i<strlen(are);i++){
if(are[i]>='A'&&are[i]<='Z'){
are[i]+=32;
}
}
for (i=0,j=0;i<1000001;i++)
{
if ((i==0||are[i-1]==' '||j)&&are[i]==word[j++])
{
if(word[j]=='\0'&&(are[i+1]==' '||are[i+1]=='\0'))
{
if (first==-1) first=i+1-j;
cnt++;
}
}
else j=0;
}
if (cnt==0) printf ("-1\n");
else printf ("%d %d",cnt,first);
return 0;
}