游客 Signup | Login
中文 | En

2887 - 统计单词数

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

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

输入样例1:

To
to be or not to be is a question
输入样例2:
to
Did the Ottoman Empire lose its power at that time

输出样例1:
2 0
输出样例2:
-1

Input

输入文件共2行。

第1行为一个字符串,其中只包含字母,表示给定单词;

第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

Output

只有1行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。

Examples

Input


                

Output


                

Hint

1<=单词长度<=10。

1<=文章长度<=10,000,000。

NOIP2011 普及组 stat

Solution C++

#include <cstdio>
#include <iostream>
using namespace std;

int main() {
	string a, s, b;
	getline(cin, a);
	for (int i = 0; i < a.size(); i ++ ) {
		if (a[i] >= 'A' && a[i] <= 'Z') a[i] += 32;
	}
	
	getline(cin, s);
	for (int i = 0; i < s.size(); i ++ ) {
		if (s[i] >= 'A' && s[i] <= 'Z') s[i] += 32;
	}
	
	int cnt = 0, pos;
	for (int i = 0; i < s.size(); i ++ ) {
		int j = i;
		while (s[j] != ' ' && j < s.size()) j ++ ;
		
		b = s.substr(i, j-i);
		if (a == b) {
			cnt ++ ;
			if (cnt == 1) pos = i;
		}

		i = j;
	}

	if (cnt) cout << cnt << ' ' << pos;
	else cout << -1;
	
	return 0;
}

Hint

1<=单词长度<=10。

1<=文章长度<=10,000,000。

NOIP2011 普及组 stat

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题