问题标题: 酷町堂:1444

0
0
已解决
刘昊宇
刘昊宇
中级守护
中级守护

一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一**单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。

#include<iostream>//头文件

#include<cstdio>//文件操作

#include<algorithm>

#include<cmath>

#include<iomanip>

#include<cstring>

using namespace std;

string s;

int n,cnt,sum,t;

string a[10000005];

int main(){

    cin>>s;

    for(int i=0;i<s.length();i++){

        if(s[i]>='A'&&s[i]<='Z'){

            s[i]+=32;

        }

    }

    for(int i=0;i<s.length();i++){

        if(s[i]>='A'&&s[i]<='Z'){

            s[i]+=32;

        }

    }

    while(cin>>a[++n]){

        for(int i=0;i<a[n].length();i++){

            if(a[n][i]>='A'&&a[n][i]<='Z'){

                a[n][i]+=32;

            }

        }

    }

    for(int i=1;i<=n;i++){

        if(a[i]==s){

            cnt++;

        }

    }

    if(cnt==0){

        cout<<-1;

        return 0;

    }

    cout<<cnt<<' ';

    for(int i=1;i<=n;i++){

        if(a[i]==s){

            if(t==0){

                cout<<sum;

            }

            t=1;

        }

        sum+=a[i].size();

    }

    return 0;

}

dalao们知道我哪里错了吗

刘昊宇在2021-09-23 21:30:03追加了内容
#include<iostream>//头文件
#include<cstdio>//文件操作
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
using namespace std;
string s;
int n,cnt,sum,t;
string a[10000005];
int main(){
	cin>>s;
	for(int i=0;i<s.length();i++){
		if(s[i]>='A'&&s[i]<='Z'){
			s[i]+=32;
		}
	}
	for(int i=0;i<s.length();i++){
		if(s[i]>='A'&&s[i]<='Z'){
			s[i]+=32;
		}
	}
	while(cin>>a[++n]){
		for(int i=0;i<a[n].length();i++){
			if(a[n][i]>='A'&&a[n][i]<='Z'){
				a[n][i]+=32;
			}
		}
	} 
	for(int i=1;i<=n;i++){
		if(a[i]==s){
			cnt++;
		}
	}
	if(cnt==0){
		cout<<-1;
		return 0;
	}
	cout<<cnt<<' ';
	for(int i=1;i<=n;i++){
		if(a[i]==s){
			if(t==0){
				cout<<sum;
			}
			t=1;
		}
		sum+=a[i].size();
	}
	return 0;
}

 


1
0
刘昊宇
刘昊宇
中级守护
中级守护

ok,我做出来了,对不起

0
朱小川
朱小川
缔造者
缔造者

既然做出来了,那就采纳我吧

0
汪宇航
汪宇航
新手启示者
新手启示者
********
********
int main(){
    string a,s;
    cin>>a;
    ********
    getline(cin,s);
    for(int i=0;i<a.size();i++){
        if(*********){
            a[i]+=32;
        }
    }
    for(int i=0;i<s.size();i++){
        if(********){
            s[i]+=32;
        }
    }
    a=" "+a+" ";
    s=" "+s+" ";
    int p=s.find(a),cnt=0;
    if(p==-1){
        cout<<"********";
        return 0;
    }
    else{
        while(********!=-1){
            cnt++;
            p=********+1;
        }
    }
    cout<<cnt<<' '<<s.find(a);
    return 0;
}

********自己猜

我要回答