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 ;
}
随机推荐
- Android项目能运行,上传svn后再下载却不能运行
今天遇到一个比较奇怪的问题,android项目上传到svn之前,可以运行,但是上传到svn后再check, 就出错. 搜索了一下,发现真的解决了问题. svn 不知道是出于什么原因,不能上传.so文件 ...
- Core Bluetooth 概述 【官方文档翻译】
Core Bluetooth 框架在Mac和iOS平台,为配备了低功耗蓝牙无线技术的设备提供了进行通信所需要的类.例如,您的应用程序可以发现,探索,和低功耗的外围设备进行交互,如心率监视器.数字温控器 ...
- python基础之 optparse.OptionParser
optparse是专门用来在命令行添加选项的一个模块. 首先来看一段示例代码 from optparse import OptionParser MSG_USAGE = "myprog[ - ...
- core-site.xml配置项:hadoop.tmp.dir
hadoop.tmp.dir:A base for other temporary directories. 集群运行后,修改该配置项后,发现类似错误: -- ::, INFO org.apache. ...
- ComboGrid 行内点击编辑内容
最近easyui需要在行内编辑选中项,但是编辑的内容出了当前选中列值,还有其他的,比较麻烦, 先看下这段代码 columns: [[ { field: 'GuestID', title: '编号', ...
- Wordpress主题中常用代码总结
1. 在 Wordpress主题中显示最热文章的 PHP代码 <?php $result = $wpdb->get_results("SELECT comment_count,I ...
- cocos2d-x中的Tiled地图
cocos2d-x中的瓦片地图是通过tiledMap软件制作的,存档格式是.tmx格式.此软件的使用步骤简单总结如下: (1)制作瓦片地图 1 打开软件,软件界面如下图. 2. 新建地图(文件-> ...
- 转——iptables详细配置
基本原理及命令使用 http://my.oschina.net/hevakelcj/blog/313212 基础知识 Linux系统内核内建了netfilter防火墙机制.Netfilter(数据包 ...
- ICE-3.5.1-错误记录
windwos上QT5使用ICE中遇到的一个小bug: error: C3083: “Stm”:“::”左侧的符号必须是一种类型error: C2039: “upCast”: 不是“IceProxy” ...
- 解决nginx上传模块nginx_upload_module传递GET参数
解决nginx上传模块nginx_upload_module传递GET参数的方法总结 最近用户反映我们的系统只能上传50M大小的文件, 希望能够支持上传更大的文件. 很显然PHP无法轻易实现大文件上传 ...