P1308 [NOIP2011 普及组] 统计单词数(模拟加函数+数学分析)

简介: P1308 [NOIP2011 普及组] 统计单词数(模拟加函数+数学分析)

题目描述



一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。


现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。


输入格式



共2 行。


第 1行为一个字符串,其中只含字母,表示给定单词;


第2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。


输出格式



一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从00 开始);如果单词在文章中没有出现,则直接输出一个整数-1−1。


输入输出样例



输入  

To

to be or not to be is a question


输出 #1复制

2 0


输入

to

Did the Ottoman Empire lose its power at that time


输出  

-1


说明/提示



数据范围


1≤ 单词长度 ≤10。


1≤文章长度≤1,000,000


noip2011普及组第2题


题目分析,这道题要非常非常细心,首先我们知道回车键是也是一个字符,所以我们可以用getchar()来”吞掉“,不然会除,第二就是我们查的是单词所以我们吧查的字符串2边都加上空格,最后我们要在查找上面的字符串第一位加个空格,不然会出现查不到第一位单词,大概出错点就最些,剩下的就是模拟,具体实现看代码。


#include<bits/stdc++.h> 
using namespace std;
int main()
{
  string a,b;
  cin>>a;
  getchar();//一定要加这个,xdm; 
  transform(a.begin(),a.end(),a.begin(),::tolower);//使a小写化 
  getline(cin,b);//可以读入含空格的字符串,cin不能; 
  b.insert(0," ");//让b前面加个空格 之后用find不怕查不到第一个 
  a=' '+a+' ';//首尾加空格,
  transform(b.begin(),b.end(),b.begin(),::tolower);//小写化 用到了函数,方便,也可以采用遍历。 
  if(b.find(a)==-1)//b.find(a);这句代码的意思就是从b字符串中查找a字符串。find找不到会返回npos也就是-1 
  cout<<"-1";
  else
  { 
    int sum=0;int n=0;
    while(b.find(a,n)!=-1)//就是相当于查一个数子就加一次sum; 
    { 
      sum++;
      n=b.find(a,n)+1;//看到这里,你已经快成功, 后面的数字代表从什么位置开始查找。如果不加了、就是第一个字符开始查找
    }
    cout<<sum<<" ";
    cout<<b.find(a);//最后如果你听懂了,可以留下一个赞,不奢求收藏。
  }
}


相关文章
|
数据可视化 Python
GEE Colab——如何利用Matplotlib在colab中进行图形制作
GEE Colab——如何利用Matplotlib在colab中进行图形制作
280 3
|
7月前
|
机器学习/深度学习 人工智能 编解码
EasyControl Ghibli:在线体验一键生成宫崎骏动画风,开源AI模型让你的照片秒变吉卜力
EasyControl Ghibli是基于扩散模型的AI工具,通过条件注入技术将普通照片转化为吉卜力动画风格,仅需100张训练样本即可精准还原标志性光影与色调特征。
1081 11
EasyControl Ghibli:在线体验一键生成宫崎骏动画风,开源AI模型让你的照片秒变吉卜力
|
9月前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
2909 12
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
20710 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 人工智能 Linux
anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
请问为什么我使用 Conda 搭建一个深度学习环境半个多小时都没成,而你10分钟就随手搭建一个环境; 讲道理,这就像搬砖,搬的久了,还不能允许我一天多拉几车吗
6629 0
anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
WK
|
机器学习/深度学习 算法
为什么Sigmoid函数比Tanh函数更好
在神经网络中,Sigmoid和Tanh函数各有优劣,选择取决于具体应用场景。Sigmoid函数输出范围为(0,1),适合二分类问题,但存在梯度消失和非零中心化的问题;Tanh函数输出范围为(-1,1),以0为中心,有利于加速收敛,但同样涉及较大的计算复杂度。两者均存在梯度消失风险,但在多数情况下,Tanh梯度问题较轻。随着技术发展,ReLU等新型激活函数因能有效缓解梯度消失并提高计算效率,已成为许多任务的首选。因此,不能简单地说Sigmoid比Tanh更好,需依据任务需求和网络结构进行选择。
WK
784 1
|
机器学习/深度学习 Linux 开发者
开发者评测 | 操作系统智能助手OS Copilot
对操作系统智能助手OS Copilot的体验
275 0
|
存储 编译器 程序员
C语言基础——C语言常见概念
C语言基础——C语言常见概念
|
缓存 关系型数据库 MySQL
MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES)无法打开的解决方法
MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES)无法打开的解决方法
24093 0
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
737 0

热门文章

最新文章