统计单词数

【描述】qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【输入】qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

2 行。qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

第 1 行为一个字符串,其中只含字母,表示给定单词;qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【输出】qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【样例输入】qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

样例 #1:
To
to be or not to be is a question

样例 #2:
to
Did the Ottoman Empire lose its power at that time

【样例输出】qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

样例 #1:
2 0

样例 #2:
-1

【参考程序】qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

C++版本qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

  1. #include<iostream> 
  2. #include<string> 
  3.  
  4. using namespace std; 
  5.  
  6. void strlower(string& s) 
  7.     // 把字符串转成小写 
  8.     int len = s.size(); 
  9.     for (int i = 0; i < len; i++) 
  10.     { 
  11.         if (s[i] >= 'A' && s[i] <= 'Z'
  12.         { 
  13.             s[i] = 'a' - 'A' + s[i]; 
  14.         } 
  15.     } 
  16.  
  17. int main() 
  18.     //读取数据 
  19.     string s1, s2; 
  20.     getline(cin, s1, '\n'); 
  21.     getline(cin, s2, '\n'); 
  22.     int i = 0; 
  23.     int len = s2.size(); 
  24.     int k = 0, cnt = 0; 
  25.     while (i < len) 
  26.     { 
  27.         // 分割单词 
  28.         int j = i + 1; 
  29.         while (j < len && s2[j] != ' '
  30.         { 
  31.             j += 1; 
  32.         } 
  33.         string s = s2.substr(i, j - i); 
  34.         if (s1.size() == s.size()) 
  35.         { 
  36.             strlower(s1); 
  37.             strlower(s); 
  38.             // 比较两个转成小写的字符串是否相等 
  39.             if (s1 == s) 
  40.             { 
  41.                 if (cnt == 0) 
  42.                 { 
  43.                     k = i;//记录第一次相等的位置 
  44.                 } 
  45.                 cnt += 1;//记录出现的次数 
  46.             } 
  47.         } 
  48.         // 单词之间或许有多个空格 
  49.         while (j < len && s2[j] == ' '
  50.         { 
  51.             j += 1; 
  52.         } 
  53.         i = j; 
  54.     } 
  55.     if (cnt == 0)//没有出现 
  56.     { 
  57.         cout << -1; 
  58.     } 
  59.     else//有出现 
  60.     { 
  61.         cout << cnt << " " << k; 
  62.     } 
  63.     return 0; 

qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 qgy100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

关 键 词

统计单词数

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢