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 ;
}

随机推荐

  1. Email Cover Letter Format

    http://jobsearch.about.com/od/sampleletters/ig/Sample-Letter-Formats/Email-Message-Format.htm   Copy ...

  2. Debian 使用杂记(一)

    前几天又冲动的把系统换成Linux了,最开始接触Linux是2010年,那时候买了个本本,预装的是ubuntu8.10,自此知道除了windows原来还有其它操作系统. 不记得什么时候开始知道ubun ...

  3. CDZSC_2015寒假新人(1)——基础 d

    Description These days, I am thinking about a question, how can I get a problem as easy as A+B? It i ...

  4. JSP中Filter中访问Spring管理的beans

    @Override public void init(FilterConfig filterConfig) {  //unchecked = filterConfig.getInitParameter ...

  5. Mobile Matrices

    This is an attempt to compile a list of relevant specifications for all modern smart phones and mobi ...

  6. nodejs iconfont处理

    做前端优化,iconfont可以替换掉很多图片,减少请求,并有很好的兼容性,颜色大小也有很好的自由度.现在网上已经有很多公开的iconfont供我们使用.但是每个项目有不同的应用场景,网上的并不能满足 ...

  7. php isset — 检测变量是否设置 foreach循环运用

    例子 $a = 336 ; $b = 33 ; function large($x,$y){ if((!isset($x))||(!isset($y))){ // echo "this fu ...

  8. jquery判断客户端的类型

    针对不同客户端下载链接的页面响应样式不一样,更人性点而已 //匹配客户端类型 var isAndroid = navigator.userAgent.toLowerCase().match(/andr ...

  9. Python成长之路第二篇(3)_字典的置函数用法

    字典的置函数用法(字典dict字典中的key不可以重复) class dict(object): """ dict() -> new empty dictionar ...

  10. jQuery的touchstart,touchmove,touchend的获取位置

    $('#webchat_scroller').on('touchstart',function(e) { var touch = e.originalEvent.targetTouches[0]; v ...