题解 P1308 【统计单词数】

zqy1018

2015-11-15 15:30:41

Solution

第一次发题解 好紧张啊 这题可以用strstr函数过 ```cpp #include <stdio.h> #include <string.h> #include <ctype.h> char k[1000005],s[11]; int y=0,fst=-1; void sc(); void sc(char i[]){ char *p=strstr(i,s); //函数返回一个指向单词出现位置的指针 if(p!=NULL){ if(((p==k)||(*(p-1)==' ')) &&((*(p+strlen(s))==' ')||(*(p+strlen(s))=='\0'))){ //判断是否是单词而不是长单词的一部分 if(fst==-1)fst=p-k; //第一次出现的位置 y++;sc(p+1); //是的话就递归寻找 }else sc(p+1); } } int main(){ scanf("%s",s); getchar();//吞掉换行 scanf("%[^\n]",k); int a,b=strlen(s),c=strlen(k); for(a=0;a<b;a++){ s[a]=tolower(s[a]); } for(a=0;a<c;a++){ k[a]=tolower(k[a]); } sc(k); if(fst==-1)printf("-1\n"); else printf("%d %d\n",y,fst); return 0; } ```