ZUFEOJ
Home
ProblemSet
Source/Category
Contest
Status
Ranklist
F.A.Qs
ContestProblemSetList
Login
Register
问题 G: 统计单词数
内存限制:128 MB
时间限制:1 S
题面:传统
评测方式:文本比较
上传者:
提交:307
通过:101
返回比赛
提交
提交记录
题目描述
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即单词必须与文章中某一独立残次在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。
#include<bits/stdc++.h>
using namespace std;
string a,b;
int main()
{
getline(cin,a);//xiao
getline(cin,b);//da
a=' '+a+' ';
b=' '+b+' ';
for(int i=0;i<a.size();i++)
if(a[i]>='A'&& a[i]<='Z')a[i]+=32;
for(int i=0;i<b.size();i++)
if(b[i]>='A'&& b[i]<='Z')b[i]+=32;
int pos=b.find(a);
int first=0,cnt=0;
if(pos!=-1){
first=pos;
while(pos!=-1){
pos=b.find(a,pos+1);
cnt++;
}
}
else{
cout<<"-1";
return 0;
}
cout<<cnt<<" "<<first;
return 0;
}
输入格式
输入文件共2行。
第1行为一个字符串,其中只包含字母,表示给定单词;
第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
输出格式
只有1行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。
输出样例1:
2 0
输出样例2:
-1
输入样例
复制
To to be or not to be is a question
输出样例
复制
2 0
数据范围与提示
1<=单词长度<=10。
1<=文章长度<=10,000,000。
NOIP2011 普及组 stat
td
Td tLWCsrmt
分类标签
NOIP复赛-2011