当前位置:网站首页>P1308 [noip2011 popularity group] count the number of words

P1308 [noip2011 popularity group] count the number of words

2022-07-07 23:40:00 Yuesi

P1308 -NOIP2011 Popularization group - Count the number of words
See blog links

General text editors have the function of finding words , This function can quickly locate the position of specific words in the article , Some can also count the number of times a specific word appears in the article .

Now? , Please program to realize this function , The specific requirement is : Given a word , Please output the number of times it appears in a given article and the location of its first appearance . Be careful : When matching words , Case insensitive , But it requires a perfect match , That is to say, a given word must be exactly the same as an independent word in the article regardless of case ( See example 1 ), If a given word is only a part of a word in the article, it is not a match ( See example 2 ).

Input format
common 2 That's ok .
The first 1 Acts as a string , There are only letters in it , For a given word ;
The first 2 Acts as a string , It can only contain letters and spaces , Represents a given article .

Output format
a line , If a given word is found in the text, output two integers , Two integers are separated by a space , They are the number of times the words appear in the article and the first place they appear ( That is, when it first appears in the article , The position of the first letter of a word in the article , Location slave 00 Start ); If the word doesn't appear in the text , Then output an integer directly -1−1.

I/o sample
Input #1
To
to be or not to be is a question
Output #1
2 0

Input #2
to
Did the Ottoman Empire lose its power at that time
Output #2
-1

explain / Tips
Data range
1≤ Word length ≤10.
1≤ The length of the article ≤1,000,000.
noip2011 Popularization Group No 2 topic

It's easy to get wrong :
This question requires you to find words instead of the same part of other sentences or words
( use find ( ) Direct search may lead to this error )
cin>>a Then consider the next getline ( cin,b) Will you read the previous carriage return

The code is as follows

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    
	string a,b;
	int l,l1;// The corresponding length of the two 
   cin>>a;
	getchar();// Prevent subsequent carriage returns from being read into the string b
	getline(cin,b);
	
	l=a.length();
	l1=b.length();
	int ge=0;
	for(int i=0;i<l;i++){
    
		a[i]=tolower(a[i]);
	}
	for(int i=0;i<l1;i++){
    
		b[i]=tolower(b[i]);
	}
	a=' '+a+' ';// Find as word 
	b=' '+b+' ';
	if(b.find(a)==-1){
    // If you can't find it 
		printf("-1\n");
	}else{
    
		int n=b.find(a);
		int m=n;
		while(m!=-1){
    
			ge++;
			m=b.find(a,m+1);
		}
		printf("%d %d\n",ge,n);// Output the number of occurrences and the location of the first occurrence 
	}
   return 0;
}

原网站

版权声明
本文为[Yuesi]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130556374810.html