405J1R训练(T636403 统计单词数)

· · 个人记录

正确代码

先来一个大写转小写函数,再来两个字符串变量:a,s;在输入s,再来一个getchar函数,这用来清空缓存中的空格,再来s=f(s);getline(cin,a);a=f(a);s=" "+s+" ";a=" "+a+" ";然后定义两个整数变量:x=0和ans=0;再来一个while循环,这while循环主要是把find函数放进去,然后来一个if判断,最后cout<<ans<<" ";cout<<a.find(s,0);

正确代码

#include<bits/stdc++.h>
using namespace std;
string f(string a){
    for(int i=0;i<a.size();i++){
        if(a[i]>='A' && a[i]<='Z'){
            a[i]+=32;
        } 
    }
    return a;
}
string a,s;
int main(){
    cin>>s;
    getchar();
    s=f(s);
    getline(cin,a);
    a=f(a);
    s=" "+s+" ";
    a=" "+a+" ";
    int x=0;
    int ans=0;
    while(a.find(s,x)!=string::npos){
        ans++;
        x=a.find(s,x)+1;
    }
    if(ans==0){
        cout<<-1;
        return 0;
    }
    cout<<ans<<" ";
    cout<<a.find(s,0);
    return 0;
}