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;
}```
posted @ 2025-08-09 22:17  流云鹤=  阅读(14)  评论(0)    收藏  举报