P1308 [NOIP2011 普及组] 统计单词数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int N = 1000010;
char arr[N]; //输入文章数组
string s; //目标匹配单词
int count =0; //记录单词出现的次数
int pos = 0; //记录单词第一次出现的位置
bool isfind = false; //记录是否找到匹配的单词
bool first = true; //是否是第一次出现
int main(){
getline(cin,s);
int i =0;
while(scanf("%c",&arr[i++])!=EOF); //循环输入
int n = strlen(arr);
for(int i = 0;i<s.size();i++) s[i] = tolower(s[i]); //全部转小写
for(int i = 0;i<n;i++) arr[i] = tolower(arr[i]);
for(int i = 0;i<n;i++){
int j = i;
//如果该位置不为空格且小于文章数组的长度,就增加j
while(arr[j] != ' ' && j < n){
j++;
}
string temp = ""; // 临时字符串存储单词
for(int l = i;l<j;l++){
temp += arr[l];
}
//是否与目标单词相同
if(temp == s ){
count ++;
//如果该单词是第一次出现,就更新出现的位置pos
if(first){
pos = j - temp.size();
first = false;
}
isfind = true;
}
i = j;
//更新i的位置
}
if(isfind) cout << count << " "<< pos;
else cout << "-1";
return 0;
}