问题 22560 --【字符串】统计单词数(NOIP2011)(例题)

22560: 【字符串】统计单词数(NOIP2011)(例题)

时间限制: 1 Sec  内存限制: 128 MB
提交: 51  解决: 8
[提交][状态][讨论版][数据上传:][下载FPS1元][下载测试数据1元][3212kb]

题目描述

例5.19  统计单词数(Noip2011)

【问题描述】

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

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

【输入】

   输入共2 行。

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

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

【输出】

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

【输入样例1】

to

to be or not to be is a question

【输出样例1】

2  0

【输入输出样例1说明】

   输出结果表示给定的单词to 在文章中出现两次,第一次出现的位置为0。

【数据范围】

   1 ≤ 单词长度≤ 10。

   1 ≤ 文章长度≤ 1,000,000。

输入

输出

提示


【算法分析】



  枚举文章中的每个单词;



  判断两个单词长度是否相同;



  枚举单词中的每个字母,判断是否都相同,如果都相同则答案加一。







【算法分析2】(详见第八章第三节)



  1.先预处理将所有字母转为大写,将pos置为0;



  2.利用string类的find(word,pos)函数查找是否存在单词;



  3.如果存在,累加答案,更新pos,返回第二步,否则退出。













来源

[提交][状态]