1 条题解

  • 2
    @ 2025-10-24 21:23:55

    一种很暴力的思路

    只是不会其他的qwq

    代码如下

    #include <bits/stdc++.h>
    
    using namespace std;
    
    void turn(char a[],int len)
    {
        for(int i=0;i<len;i++)
        {
            if(a[i]>=65&&a[i]<=90)
            {
                a[i]=a[i]-'A'+'a';
            }
        }
    }
    
    char sen[1000001];
    int main()
    {
        char w[101];
    
        cin.getline(w,101);
        cin.getline(sen,1000000001);        //输入单词,句子
    
        int sl=strlen(sen);
        int wl=strlen(w);
    
        turn(sen,sl);           //大写转小写
        turn(w,wl);
    
        int sum=0;              //出现次数
        int first=-1;           //第一次出现位置
        int start=0;            //单词开头
    
        bool same=true;         //是否正确
    
        for(int i=0;i<=sl;i++)
        {
    
            if(i==sl||sen[i]==' ')    //空格前一个单词或最后一个单词
            {
    
                if(i-start==wl)    //求单词长度(不对直接跳)
                {
                    same=true;
                    for(int j=0;j<wl;j++)
                    {
                        if(sen[start+j]!=w[j])
                            same=false;
                    }
                    if(same)
                    {
                        sum++;
                        if(first==-1)
                            first=start;
                    }
                }
    
                start=i+1;
            }
    
        }
    
        if(first!=-1)           //判断是否找到过
            cout<<sum<<' '<<first;
        else
            cout<<"-1"<<endl;
        return 0;
    }
    

    亲测AC~

    从蒟蒻开始的异oj生活

    【深基6.例7】[NOIP2011 普及组] 统计单词数

    信息

    ID
    587
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者