1 solutions

  • 0
    @ 2024-6-11 13:24:01

    特殊数据(20pts)

    • 直接输出无解的做法
    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        cout<<-1;
        return 0;
    }
    

    模拟(100pts)

    • 先统一转化大小写,然后使用最长平台方式取出每段的单词,然后进行匹配。
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        string s1,s2;
        getline(cin,s1);
        getline(cin,s2);
        int n=s1.size();
        int m=s2.size();
        for(int i=0;i<n;i++) //串1统一转小写
        {
            s1[i]=tolower(s1[i]);
        }
        for(int i=0;i<m;i++) //串2统一转小写
        {
            s2[i]=tolower(s2[i]);
        }
        int cnt=0,k=-1; //预处理答案
        for(int i=0;i<m;i++) //枚举每个位置
        {
            if(s2[i]==' ') continue; //空格继续
            int j=i;
            while(j<m&&s2[j]!=' ') j++; 
            j--;
            string s=s2.substr(i,j-i+1); //最长平台取出单词
            if(s==s1) //判断相等
            {
                cnt++;
                if(k==-1) //第一次出现的位置
                {
                    k=i;
                }   
            } 
            i=j; //跳到单词最后一个位置
        }
        if(k==-1) cout<<-1; //找不到
        else cout<<cnt<<" "<<k<<endl;
        return 0;
    } 
    
    • 1

    Information

    ID
    434
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    9
    Tags
    # Submissions
    13
    Accepted
    3
    Uploaded By