Stat
Description
请你编程实现一个简单(渣渣)的文本编辑器,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同,如果给定单词仅是文章中某一单词的一部分则不算匹配。
Input
输入文件名为stat.in ,2 行。
第1 行一个字符串,只含字母,表示给定单词
第2 行一个字符串,只可能包含字母和空格,表示给定的文章。
Output
输出文件名为stat.out 。
一行,如果在文章中找到给定单词则输出两个整数,整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,输出-1。
SampleInput&Output
#1:
To
to be or not to be is a question
#2:
to
Did the Ottoman Empire lose its power at that time
#1:
2 0
#2:
-1
Hint
1≤ 单词长度≤10。
1≤ 文章长度≤1000000
这道题就是简单的字符匹配。
首先读入一个目标字符串,然后再循环读入每个单词,如果相同,匹配=true,遍历要搜索的字符串。最后输出结果。
这里需要注意的一点是,测评给出的数据中,要搜索的字符串的开头不一定是个字符,有可能是空格,比如说这个:

它的"td"和"Td"之间有好几个空格,如果用cin输入字符串的话,cin会直接省略掉这几个空格,答案就不正确了。这时候就需要另一个输入string的函数——getline()。getline()的原型是
istream& getline ( istream &is , string &str , char delim );
这里第一个参数是输入流,第二个参数是要输入的字符串名,第三个是读到这个字符停止(默认是’\n’)。
这个函数就可以读入带空格的字符串了
另外,题目中要求不管大小写,所以我们在输入的时候可以把所有输入转为小写,再判断。这里用到一个函数:
tolower();
它可以把字符转换为小写,用法见下面程序。
下面贴源码:
#include<iostream>
#include<cstdio>
#include<string>
#include<sstream>
#include<windows.h>
using namespace std; string mubiao; int wei=,cishu=,firstwei=; bool guo=false,you=false; int main()
{
freopen("stat.in","r",stdin);
freopen("stat.out","w",stdout);
cin>>mubiao;
for(int i=;i<mubiao.length();i++)
{
mubiao[i] = tolower(mubiao[i]);//转换目标为小写
}
string shuju;
string kong=" ";
while(getline(cin,shuju,' '))
{
if(shuju==kong)
{
firstwei++;
}
else
{
for(int i=;i<shuju.length();i++)
{
shuju[i] = tolower(shuju[i]);//转换输入为小写
}
if(shuju==mubiao)
{
you=true;
cishu++;
}
if(!you)
{
firstwei+=shuju.length()+;
}
} }
if(you)
{
cout<<cishu<<' '<<firstwei-;
}
else
{
cout<<"-1";
} fclose(stdout);fclose(stdin);//可加可不加
return ;
}
随机推荐
- mvc 笔记
@{ ViewBag.Title = "主页"; } <div> 这里就是渲染Body啦.~~不需要写神马<asp:Content />,其实因为Rende ...
- RTUILabel+正则表达式
RTLabel和RegexKitLite都要导入第三方库 使用Regexkitlite库进行正则表达式的解析 1.库是使用MRR,如果在ARC工程里面使用这个类,必须在project->buil ...
- 获取设备的UUID
很多时候需要获取设备的UUID,比如在蓝牙交互时,需要获取服务和特征的UUID,那么如何获取设备的UUID呢?请见如下代码: // // ViewController.m // 获取UUID // / ...
- 不同css样式适应不同屏幕大小实现自适应宽度
@media screen and (判断属性){ CSS样式选择器 } 例如: <div class="silder_photo"></div> < ...
- Spring:启动项目时加载数据库数据(总结)
在项目中需要启动程序时,要将数据库的用户信息表加载到内存中,找到一下几种方式. 1.实现ApplicationListener接口,重写onApplicationEvent方法,可以在项目启动的时候执 ...
- API例子:用Java/JavaScript下载内容提取器
1,引言 本文讲解怎样用Java和JavaScript使用 GooSeeker API 接口下载内容提取器,这是一个示例程序.什么是内容提取器?为什么用这种方式?源自Python即时网络爬虫开源项目: ...
- join函数——Gevent源码分析
在使用gevent框架的时候,我们经常会使用join函数,如下: def test1(id): print(id) gevent.sleep(0) print(id, 'is done!') t = ...
- 【原创】QT5-卸载精灵v1.0-卸载windows软件-简易版
由于项目需求,需要实现卸载windows上的普通软件的小功能,实现起来还是比较简单的. 先发个图: 思路: 1.根据注册表的信息去打开应用程序,卸载也一样: 2.读桌面的快捷方式,根据快捷方式的指向路 ...
- RESTful API实现
RESTful API实现 ASP.NET Core Web API 开发-RESTful API实现 REST 介绍: 符合REST设计风格的Web API称为RESTful API. 具象状态传输 ...
- 多个项目使用NET Core
.NET Core系列 :3 .使用多个项目 通过前面的两篇文章,我们已经知道如何创建新的项目,如何生成并运行我们的应用程序,也知道(大致) project.json 文件中的内容是什么意思.但大 ...