洛谷 - 统计单词数

P1308 统计单词数

题目描述

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

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章

中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。

输入输出格式

输入格式:

 

22行。

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

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1: 复制
To
to be or not to be is a question
输出样例#1: 复制
2 0

输入样例#2: 复制
to
Did the Ottoman Empire lose its power at that time
输出样例#2: 复制
-1

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     string w;    //单词 
 7     string t;    //文章 
 8 
 9     getline(cin, w);
10     getline(cin, t);
11 
12     for(int i = 0; i < w.length(); i++)    //将单词和文章中所有单词转换为小写字母 
13     {
14         w[i] = tolower(w[i]);
15     }
16 
17     for(int i = 0; i < t.length(); i++)
18     {
19         t[i] = tolower(t[i]);
20     }
21 
22     int sum = 0;    //记录出现的总次数 
23     int pos;    //记录单词在文章第一次出现的位置 
24     int i, j;    //循环变量 
25     
26     // w: to
27     // t: wto hello to you tom
28     
29     for(i = 0; i <= t.size() - w.size(); i++)    //循环t串的0~(t-w)
30     {
31         for(j = 0; j < w.size(); ++j)    //t的字符,分别对其对其后面的w的长度位做比较 
32         {
33             if(t[i + j] != w[j])    //如果在w的长度之内有不相等的,直接跳出循环 
34             {
35                 break;
36             }
37 
38             if(i > 0 && t[i-1] != ' ')    //不在开头的时候,如果它前面不是空格,就表示它不是单独的单词 
39             {
40                 break;
41             }
42         }
43 
44         if(j == w.size() && (t[i + j] == ' ' || i+j == t.size()))    //将w匹配完,并且下一个就是空格,或者i+j刚好到了t的最后(最后的单词没有空格) 
45         {
46             sum++;
47 
48             if(sum == 1)    //记住第一次出现的位置 
49             {
50                 pos = i;
51             }
52         }
53 
54     }
55 
56     if(sum == 0)
57     {
58         cout << -1;
59     }
60     else
61     {
62         cout << sum << " " << pos;
63     }
64 
65     return 0;
66 }

 

posted @ 2019-03-23 00:12  WindSun  阅读(568)  评论(0编辑  收藏  举报
博客已停更,文章已转移,点击访问