题目描述

一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位

置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章

中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,

即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),

如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【数据范围】

1 ≤ 单词长度≤ 10。

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

【输入输出样例 1 说明】

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

【输入输出样例 2 说明】

表示给定的单词 to 在文章中没有出现,输出整数-1。

输入格式

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

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

输出格式

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,

分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字

母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。

样例输入

To
to be or not to be is a question

样例输出

2 0

To

string学习:http://www.cnblogs.com/mr-wid/archive/2013/01/21/2870575.html

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<sstream>
  4. #include<string>
  5. #include<vector>
  6. using namespace std;
  7. vector<string> vec;
  8. vector<int> pos;
  9. string word;
  10. string line;
  11. string toLower(string s)
  12. {
  13. string tmp="";
  14. char ch;
  15. int len=s.length();
  16. for(int i=;i<len;i++)
  17. {
  18. ch=s[i];
  19. if('A'<=ch&&ch<='Z')
  20. ch+=;
  21. tmp+=ch;
  22. }
  23. return tmp;
  24. }
  25. int main()
  26. {
  27. cin>>word;
  28. word=toLower(word);
  29. scanf("%*c");
  30. int st=-,t=;
  31. getline(cin,line);
  32. line=toLower(line);
  33. int flag=;
  34. //求出每个单词在文章中的位置 ,string 不可通过 = 修改
  35. for(int i=;i<line.length();i++)
  36. {
  37. if(flag==&&line[i]!=' ')
  38. {
  39. pos.push_back(i);
  40. flag=;
  41. }
  42. if(flag==&&line[i]==' ')
  43. {
  44. flag=;
  45. }
  46. }
  47. /*
  48. for(int i=0;i<pos.size();i++)
  49. cout<<pos[i]<<endl;
  50. */
  51.  
  52. stringstream ss;
  53. ss<<line;
  54. while(ss)
  55. {
  56. string tmp;
  57. ss>>tmp;
  58. vec.push_back(tmp);
  59. }
  60.  
  61. for(int i=;i<vec.size()-;i++)
  62. {
  63. string tmp=vec[i];
  64. if(!word.compare(tmp))
  65. {
  66. if(st==-)
  67. {
  68. st=pos[i];
  69. }
  70. t++;
  71. }
  72. }
  73.  
  74. if(st==-) cout<<-<<endl;
  75. else cout<<t<<' '<<st<<endl;
  76.  
  77. return ;
  78. }

noip2011普及组:统计单词的更多相关文章

  1. noip2011普及组——统计单词数

    统计单词数 时间限制:1 s 内存限制:128MB [问题描述]一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实 ...

  2. NOIP2011 普及组 T3 洛谷P1309 瑞士轮

    今天题做太少,放道小题凑数233 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公 ...

  3. [NOIP2011] 普及组

    数字反转 小模拟 #include<cstdio> #include<iostream> #include<cstring> using namespace std ...

  4. NOIP2011普及组 数字反转

    题目OJ链接: http://codevs.cn/problem/1130/ https://www.luogu.org/problemnew/show/P1307 2011年NOIP全国联赛普及组 ...

  5. [NOIP2011普及组]瑞士轮 JAVA实现

    题目描述 2*N名编号为1~2N的选手共进行R轮比赛.每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名.选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和.总分 ...

  6. noip2011普及组——数字反转

    数字反转 时间限制:1s 内存限制:128MB[问题描述]给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零 ...

  7. NOIP2011普及组 瑞士环 保序性

    题目链接:http://noi.openjudge.cn/ch0401/4363/ 分析:如果直接模拟,时间复杂度是O(r*nlogn)超时 然后我们发现每次一轮开始时,刚开始是保序的,然后我们可以把 ...

  8. 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)

    题目链接: https://vijos.org/p/1771 题目大意: 给定2N个人(N<=100 000)和其初始分数.能力值(能力两两不同),比赛M次(M<=50),每次PK都是按分 ...

  9. 【解题报告】瑞士轮(NOIP2011普及组T3)

    [题外话:这道题吧……说实话我不太喜欢……因为卡快排.] 题目不贴了,就是给你一个赛制,然后各个选手的初始得分和能力值,问你进行R轮比赛之后第Q名的编号是多少(这个编号读进来就要算OYZ,初始快排的时 ...

随机推荐

  1. struts2 文件上传和下载,以及部分源代码解析

    struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form ...

  2. centos安装python3.7.0过程记录

    参考自这里,整理出以下步骤. 一.下载python3.7.0包地址:https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 二.安装 登陆Li ...

  3. 有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。

    // ConsoleApplication12.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" // ConsoleApplication1 ...

  4. WampServer无法直接打开myprojects的解决方法

    https://jingyan.baidu.com/article/7e4409533ace042fc1e2ef40.html

  5. 流式 storm介绍

    Storm是什么 如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统.按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义.我们都知道,根据goo ...

  6. mapreduce代码实现入门

    mapreduce代码主要包括三个类,map类.reduce类以及测试类! 以wordcount为例, map类为: static class WordMapper extends Mapper< ...

  7. NoSQL数据库介绍(4)

    4 键/值存储      讨论了经常使用的概念.技术和模式后.第一类NoSQL数据存储会在本章进行研究. 键/值存储通常有一个简单的数据模型:一个map/dictionary,同意客户按键来存放和请求 ...

  8. PDO:: 数据访问抽象层 ? :

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 【BZOJ4976】宝石镶嵌 DP

    [BZOJ4976]宝石镶嵌 Description 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,...,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升法杖的威力.不幸的是,小Q的法 ...

  10. 之前博客中的代码都放到github上

    之前一直把代码托管在taocode上,现在已经不能用了,所以把代码整理了一下,统一都放在gibhub上了. LALR(1)语法分析生成器:https://github.com/kiven-li/xby ...