AcWing446. 统计单词数
AcWing446.统计单词数
不多解释了,直接写在代码里了
这里用到读取字符串的函数getline(cin, s);可以无视空格。
注意:匹配单词时,不区分大小写,但要求完全匹配
题中提到不区分大小写,所以我们都转化为小写,用tolower
可以知道:每写一个单词就会空一格,我们可以对比两个空格间的单词和输入单词
注意:最后一个单词后面没有输入空格,所以我们需要人为加入一个空格避免丢失单词
*/
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1;
string s2;
//读取
getline(cin,s1);
getline(cin,s2);
//转换为小写
for(int i=0;i<s1.size()-1;i++) s1[i]=tolower(s1[i]);
for(int i=0;i<s2.size()-1;i++) s2[i]=tolower(s2[i]);
s2+=' ';//在末尾加空格
//查找
string word;//保存单词
int ans=0;//计数器
int st=-1;//存下单词第一次出现的位置,初值为-1
for(int i=0;i<s2.size()-1;i++)
{
if(s2[i]==' ')
{
if(word==s1)
{
ans++;
if(st==-1) st=i-s1.size();
}
word="";//匹配完后将word置空
}
else word+=s2[i];
}
if(ans) cout<<ans<<" "<<st;
else cout<<st;
return 0;
}```

浙公网安备 33010602011771号