p1308 统计单词数
题目描述
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main( ) {
char c[20]= {0},s[1000010]= {0},c1;
int i,j,lenth1,lenth2,ans=0,word=-1;
bool k=0;
gets(c);//c代表给定的单词
gets(s);//s代表给定的文章
lenth1=strlen(c);
lenth2=strlen(s);
for(i=0; i<lenth1; i++)
if(c[i]>='A' && c[i]<='Z')
c[i]+=-'A'+'a';//将c字符串转化为小写字母
for(i=0; i<lenth2; i++)
if(s[i]>='A' && s[i]<='Z')
s[i]+=-'A'+'a';//同上
c1=c[0];
for(i=0; i<=lenth2-lenth1; i++)//i表示单词的位置
if(s[i]==c1)//判断单词首位是否相同
if(i==0 || s[i-1]==' ') {//判断s[i]是否是独立的单词
for(j=1; j<lenth1; j++)
if(s[i+j]!=c[j]) {
k=1;//判断接下来的j位是否都相同
break;
}
if(k==0)
if(i+lenth1==lenth2 || s[i+lenth1]==' ') {
ans++;//计数
if(word==-1)//判断是不是单词第一次出现
word=i;//word为给定单词在给定文章里第一次出现的位置
}
k=0;//清零,进入下一次判断
}
if(word==-1)
cout<<-1;//如果没有出现给定单词,输出-1
else
cout<<ans<<" "<<word;
return 0;
}