``一、题目
二、题目分析
本题的一般做法是暴力判断或者采用strtok函数进行字符串分解。下面我将采用find函数的做法进行判断。值得注意的是find函数只能找到第一个匹配的位置,而可能出现“kkkcsdn csdn”中找“csdn”的情形。因此,应进行多次判断,直到所有位置均不符合要求。
三、代码
#include
#include
using namespace std;
string a[100];
int main()
{
int t;
cin>>t;
for(int i=0;i<t;i++)
{
int n;
cin>>n;
cin.ignore();
string b;
getline(cin,b);
int c=0;
for(int i=0;i<n;i++)
{
getline(cin,a[i]);
int d=a[i].find(b);
int e=b.length();
if(d!=-1&&(d==0||a[i][d-1]==' ')&&(a[i][d+e]==' '||a[i][d+e]=='\0'))
c++;
else if(d!=-1)
while(d!=-1)
{
a[i][d]='2';
d=a[i].find(b);
if(d!=-1&&(d==0||a[i][d-1]==' ')&&(a[i][d+e]==' '||a[i][d+e]=='\0'))
c++;
}
}
if(c==0)cout<<"Do not find"<<endl;
else cout<<c<<endl;
cout<<endl;
}
return 0;
}