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,遍历要搜索的字符串。最后输出结果。

这里需要注意的一点是,测评给出的数据中,要搜索的字符串的开头不一定是个字符,有可能是空格,比如说这个:

Stat

它的"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 ;
}

随机推荐

  1. java验证码前台技术

    //下面是在前台jsp页面不用导工具的情况下制作的验证码的基本代码 $(function(){ //创建验证码 createCode(); jQuery.validator.addMethod( &q ...

  2. web开发常用的js验证&comma;利用正则表达式验证邮箱、手机、身份证等输入

    正则表达式验证 //邮箱 \-])+\.)+([a-zA-Z0-]{,})+$/; email = document.getElementById("email").value; ...

  3. 合并master分支到自己的分支

    切换到自己的分支(比如:self):git checkout self: 在自己分支下,推送自己的分支到github远端仓库:git push --set-upstream origin self: ...

  4. 【阿里云产品公测】离线归档OAS,在也不用备份担心空间了

    作者:阿里云用户 莫须有3i 1 起步 1.1 初识OAS 啥是OAS,请看官方说明: 引用 开放归档服务(Open Archive Service,简称OAS),致力于提供低成本.高可靠的数据归档服 ...

  5. 删除重复记录的SQL语句

    1.所有字段均重复的记录(重复记录保留一条) Select distinct * into #Tmp from tblName Drop table tblName Select * into tbl ...

  6. 获取Android自己写好了的apk以及反编译

    今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子 你可能有疑问,为什么要那么麻烦,从系 ...

  7. 单片机C 语言与汇编语言混合编程

    在单片机应用系统设计中,过去主要采用汇编语言开发程序. 汇编语言编写的程序对单片机硬件操作很方便,编写的程序代码短,效率高,但系统设计的周期长,可读性和可移植性都很差.C语言程序开发是近年来单片机系统 ...

  8. jquery treeTable插件使用细则

    简介 treeTable是跨浏览器.性能很高的jquery的树表组件,它使用非常简单,只需要引用jquery库和一个js文件,接口也很简单. 优点 兼容主流浏览器: 支持IE6和IE6+, Firef ...

  9. Codeforces 343D WaterTree - 线段树&comma; DFS序

    Description Translated by @Nishikino_Maki from Luogu 行吧是我翻的 Mad scientist Mike has constructed a roo ...

  10. &equals;&equals;与Equals的作用

    string str1 = "Blackteeth"; string str2 = str1; string str3 = "Blackteeth"; Cons ...

上一篇:简单易懂的snmpd.conf配置文件说明


下一篇:吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:自然语言处理Word Embedding 单词向量化