#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
cin>>b;
for(int i=0;a[i];i++)
{
if(a[i]>='A'&&a[i]<='Z') a[i]=a[i]+32;
if(!(a[i]>='a'&&a[i]<='z')) a[i]=' ';
}
for(int i=0;b[i];i++)
{
if(b[i]>='A'&&b[i]<='Z') b[i]=b[i]+32;
}
a=" "+a+" ";
string a1;
for(int i=0;a[i];i++)
{
if(a[i]==' '&&a[i-1]==' ') continue;
a1=a1+a[i];
}
a=a1;
int temp=a.find(b,0);
int temp1=0;
if(temp==-1)
{
cout<<0;
return 0;
}
int sum=0;
while(temp!=-1)
{
sum++;
temp1=a.find(' ',temp);
temp=a.find(b,temp1);
}
cout<<sum;
return 0;
}
老师的更简单的方法:输入完的时候就已经分好string了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
char ch;
vector<string> v;
string t = "";
do
{
ch=getchar();
if(!isalpha(ch))
{
if(t.size()>0) v.push_back(t);
t = "";
}
else t += tolower(ch);
}while(ch!='\n');//读到行尾
cin >> t;
std::transform(t.begin(), t.end(), t.begin(), ::tolower);
int cnt = 0;
for(auto x:v)
{
if(x.find(t)!=-1) cnt++;
}
cout << cnt;
}