这道题的话呢没有采用一般的套路,而是采用截取stl截取字符串的方式,把截取的字符串跟第一个字符串进行比较,由于采用了c++的string,实现思路比较简单。需要注意的是,由于题目要求“如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。”,所以注意在字符串的前后加一个空格,来真正模拟一个单词。
#include<iostream>
#include<string.h>
using namespace std;
int main() {
string a,b;
getline(cin,a);
getline(cin,b);
a=" "+a+" ";
b=" "+b+" ";
for(int i=0;a[i];i++)
if(a[i]>='A'&&a[i]<='Z')
a[i]+=32;
for(int i=0;b[i];i++)
if(b[i]>='A'&&b[i]<='Z')
b[i]+=32;
int count=0;
int la=a.size();
int start=-1;
for(int i=0;i<=b.size()-la;i++){
if(a==b.substr(i,la)&&start==-1){
count++;start=i;continue;
}
if(a==b.substr(i,la))count++;
}
if(start==-1)cout<<start<<endl;
else cout<<count<<" "<<start<<endl;
}