题目描述

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

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

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

输入输出格式

输入格式:

共 22 行。

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

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

输出格式:

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

输入输出样例

输入样例#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≤1≤ 单词长度 ≤10≤10 。

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

noip2011普及组第2题

需要注意的点:

1.tolower()和toupper()只会返回一个转化了大小写的值,而不会错误,并不会改变原数组的值,所以不能用来直接改变数组的大小写。

2.transform(s1.begin(), s1.end(),s1.begin(), ::tolower);可以把整个字符串变成小写的。

3.getline前如果有cin输入,需要在前面加getchar()或者cin.ignore()读入或丢弃之前在缓冲区留下的换行符.

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
string s1;
char s2[];
cin >> s1;
transform(s1.begin(), s1.end(),s1.begin(), ::tolower);//把s1全转化为小写
getchar();
cin.getline(s2,sizeof(s2)/sizeof(s2[]));
int index = ,cnt = ;
int s = ,e = ;
int find = -;
//0123456789
//*to*d**to
while(s2[s]!='\0' && s2[e]!='\0')
{
s = e;
while(s2[s]==' '&& s2[s]!='\0')
{
s++;
}
e = s;
while(s2[e]!=' ' && s2[e]!='\0')
{
e++;
}
//从s到e-1全转化为小写
if(s1.size()==(e-s))
{
bool flag = true;
for(int i = ;i<e-s;++i)
{
if(isupper(s2[s+i]))//s2[s+i]<'a'
{
s2[s+i] += ;//lower(s2[s+i]);错误,并不会改变原数组的值
}
if(s1[i] != s2[s+i])
{
flag = false;
break;
}
}
if(flag == true)
{
if(find==-)
{
find = s;
}
cnt++;
}
}
}
if(cnt == )
{
cout << - << endl;
}
else
{
cout << cnt<<" "<<find << endl;
}
return ;
}

洛谷 P1308 统计单词数【字符串处理】的更多相关文章

  1. 洛谷 P1308 统计单词数【字符串+模拟】

    P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定 ...

  2. 洛谷P1308.统计单词数(字符串匹配)

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  3. 洛谷 P1308 统计单词数

    P1308 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定 ...

  4. 洛谷 P1026 统计单词个数

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单 ...

  5. 【洛谷】P1308 统计单词数-全AC题解(易理解

    弟弟的混乱代码(易理解 大概 思路: 循环b(被找的字符串),遇空格比较两空格间的长度是否与a(需要查找的字符)相等:不相等继续循环:相等比较内容是否相同(倒数比较,不一样直接退出 ,直到比较到第一个 ...

  6. 洛谷 P1026 统计单词个数 Label:dp

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单 ...

  7. 洛谷 P1308 统计单词数【string类及其函数应用/STL】

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  8. [NOIP2001] 提高组 洛谷P1026 统计单词个数

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保 证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的 ...

  9. 洛谷P1026 统计单词个数【区间dp】

    题目:https://www.luogu.org/problemnew/show/P1026 题意: 给定一个字符串,要求把他分成k段.给定s个单词,问划分成k段之后每段中包含的单词和最大是多少. 一 ...

随机推荐

  1. caffe to tensorflow alexnet model

    from kaffe.tensorflow import Network class AlexNet(Network): def setup(self): (self.feed('data') .co ...

  2. AD9850驱动程序--MSP430版本

    前段时间忙着画板子搞运放搞滤波了,程序更新的少,发现MSP430不是太好用,尤其Timer,不过也与我使用内部晶振有关,产生正玄波之前用MSP430发出PWM,再进行滤波变为正弦波太麻烦了,这次改用D ...

  3. 基于Linux的v4l2视频架构驱动编写(转载)

    转自:http://www.linuxidc.com/Linux/2011-03/33022.htm 其实,我刚开始一直都不知道怎么写驱动,什么都不懂的,只知道我需要在做项目的过程中学习,所以,我就自 ...

  4. Paratroopers(最小割模型)

    http://poj.org/problem?id=3308 题意:一个m*n的网格,有L位火星空降兵降落在网格中,地球卫士为了能同时消灭他们,在网格的行或列安装了一个枪支,每行或每列的枪支都能消灭这 ...

  5. Vue 柱状图

    echarts.js作为国内的IT三巨头之一的百度的推出一款相对较为成功的开源项目,总体上来说有这样的一些优点 1.echarts.js容易使用 echarts.js的官方文档比较详细,而且官网中提供 ...

  6. go 成长路上的坑(1)

    一.先来看一段代码 package main import "fmt" type X struct{} func (x *X) test(){ println("h1&q ...

  7. 【洛谷2904/BZOJ1617】[USACO08MAR]跨河River Crossing(动态规划)

    题目:洛谷2904 分析: 裸dp-- dp方程也不难想: \(dp[i]\)表示运\(i\)头牛需要的最短时间,\(sum[i]\)表示一次运\(i\)头牛(往返)所需的时间,则 \[dp[i]=m ...

  8. IOS开发 键盘添加工具条 退出 上一项 下一项 简单实现

    首先设置每个 UITextField 的 inputAccessoryView 为UIToolBar : 将所有的 textField 放入一个数组: 设置 UITextField UITextFie ...

  9. Mediacodec编码后的h264视频出现马赛克问题

    问题:在视频采集后,通过Mediacodec编码生成h264视频文件,播放时出现马赛克较多,无论调整帧率.码率.还是分辨率都不能解决问题 出现问题的原因:编码时传入的时间戳不对.时间戳是视频播放的标准 ...

  10. linux 安装 mongo

    整个安装过程:下载安装包--> 解压,添加系统路径(是滴,不用安装解压即可) --> 创建数据目录 --> 启动mongod服务 --> 运行mongo 1.下载安装包 Mon ...