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 ;
}
随机推荐
- 使用react-native做一个简单的应用-02项目搭建与运行
下面我们开始着手去做这一个项目,因为初学不久就开始边学边做,所以有些地方设计不太合理.请大家多多包涵.0.0 下面来介绍截图中的三个文件夹, GuoKuApp:是我开发app的文件夹. GuoKuDB ...
- Swift语法基础入门一(适合有C, OC开发人员)
Swift开发体验 /*: 创建对象 * OC: alloc initWithXXX 方法 * Swift: (xxx:) */ /*: 调用方法 * OC: [UIColor redColor]; ...
- G - Reduced ID Numbers(第二季水)
Description T. Chur teaches various groups of students at university U. Every U-student has a unique ...
- RemoteViews的内部机制
1.RemoteViews的构造方法public RemoteViews(String packageName,int layoutId) 第一个表示当前应用的包名(反射机制需要),第二个表示加载的布 ...
- python运维开发(十四)----HTML基本操作
内容目录: HTML概述 head标签 body中常用标签 css选择器 css常用属性 HTML HTML概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言) ...
- C# Chart 折线图 多条数据展示
private void btn_Click(object sender, EventArgs e) { DBHelper db = new DBHelper(); DataSet ds = db.G ...
- 提取肤色信息原理及操作——opencv
网上也有很多的资料,讲述怎么提取肤色的,大致有5种方法.这几种方法转载http://blog.csdn.net/augusdi/article/details/8865275 第一种:RGB colo ...
- QT多重继承的时候,要把QObject放在最前面,否则报错——C++认为人性本恶,默认都是私有的,这点和Delphi的世界观不一样
在买来的控件(没有源码)的基础上,想加入QObject的一些特性,不得不多继承: class MyProgress : public CProgress, public QObject 但总是报错: ...
- HTML5 页面制作工具
https://www.zhihu.com/question/30087283 HTML5 页面制作工具 免费的基于 HTML 5 的 Web Apps 生成器工具网站 81 235 初页 制 ...
- Easyui tree 开启拖放后 在IE下 性能惨不忍睹
项目中加载一个树结构代码如下 //加载树 function LoadTree() { var url = "../Ajax/StationTree.ashx?showVirtual=1&qu ...