#include<iostream>
#include<cstring>
using namespace std;
string sentence,keyword;
string cutsentence[1000000];
int main(){
getline(cin,keyword); //读入数据
getline(cin,sentence);
for(int i=0;i<=keyword.size();i++){
if(keyword[i]>='A'&&keyword[i]<='Z'){
keyword[i]+=32; //小写转换
}
}
for(int i=0;i<=sentence.size();i++){
if(sentence[i]>='A'&&sentence[i]<='Z'){
sentence[i]+=32; //小写转换
}
}
int blkflag=0; //blkflag:空格数量,反推单词数
for(int i=0;i<=sentence.size();i++){
if(sentence[i]==' '){
blkflag++; //标记空格数量
}
}
int cutnum=blkflag+1,cutflag=0; //cutnum:单词切片数量 cutflag:切片起始点位置
for(int i=0;i<=cutnum;i++){
for(int j=cutflag;j<=sentence.size();j++){ //从起始点开始对
if(sentence[j]==' '){ //划定范围
for(int k=0;k<j;k++){ //确保在0<k<j范围内复制
cutsentence[i][k]=sentence[k]; //大数组->小数组
}
cutflag++; //复制完把起始点调到空格后面的字母
break; //退出本轮循环
}
}
}
int firstflag=0,sameflag=0,lencut,samewordflag=0;
for(int i=0;i<=cutnum;i++){ //以切片数为界限循环
for(int k=0;k<sentence.size();k++){ //开足检测空间
if(cutsentence[i][k]=='\0'){ //检测到大数组中有无数据终止符时记录循环数k
lencut=k-1; //统计本轮切片长度
}
}
if(lencut==keyword.size()){ //检测切片长度是否与关键字长度相同
for(int k=0;k<=sentence.size();k++){ //开足检测空间
if(cutsentence[i][k]==keyword[k]){ //如果大数组记录数据与关键字某一字符相同
sameflag++; //等位相同字符数
}
}
}
if(sameflag==lencut){ //若完全相同
samewordflag++; //单词相同数+1
if(firstflag==0){ //如果没有第一次出现的标识
firstflag=i; //将当前切片数(从0开始)设为第一次出现的标识
}else break; //如果标识过则从头开始循环
}
}
if(samewordflag!=0){ //如果有相同的单词出现
cout<<samewordflag<<" "<<firstflag<<endl; //输出相同个数与初次出现的标识点
}else if(samewordflag==0){ //如果一个相同的也没有
cout<<"-1"<<endl; //输出"-1"
}
return 0; //结束
}
测试的时候发现大数组向小数组的复制失败,debug的时候复制数组什么也没有
恳求各位指点迷津