2 solutions

  • 1
    @ 2026-8-21 15:10:12

    100分超密堆写法:

    #include<bits/stdc++.h>
    using namespace std;
    string s1,s2;
    int main(){
        getline(cin,s1);
        getline(cin,s2);
        int n=s1.size(),cnt=0;
        int m=s2.size(),k=-1;
        for(int i=0;i<n;i++) s1[i]=tolower(s1[i]);
        for(int i=0;i<m;i++) s2[i]=tolower(s2[i]);
        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;
    } 
    
    • -2
      @ 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
      7
      Tags
      # Submissions
      71
      Accepted
      14
      Uploaded By