首页 > 其他分享 >统计单词数

统计单词数

时间:2023-09-24 17:13:56浏览次数:56  
标签:样例 cin 单词 给定 文章 sa 统计

题目:

[NOIP2011 普及组] 统计单词数

题目描述

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

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

输入格式

共 2 行。

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

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

输出格式

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

样例 #1

样例输入

To
to be or not to be is a question

样例输出

2 0

样例 #2

样例输入

to
Did the Ottoman Empire lose its power at that time

样例输出

-1

提示

数据范围

$1\leq $ 第一行单词长度 \(\leq10\)。

$1\leq $ 文章长度 \(\leq10^6\)。

解析

先来看一下之前我写的代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	string sa;
	getline(cin,sa);
	string sb;
	getline(cin,sb);
	for(int i=0;i<sa.size();i++){
		if(sa[i]>='A'&&sa[i]<='Z'){
			sa[i]+=32;
		}
	}
	for(int i=0;i<sb.size();i++){
		if(sb[i]>='A'&&sb[i]<='Z'){
			sb[i]+=32;
		}
	}
	int a=sa.size();
	int sum=0;
	int f;
	string gga=' '+sa+' ';
	string ggb=' '+sb+' ';
	if(ggb.find(gga)==-1){
		cout<<-1;
	}else{
		f=ggb.find(gga);
		while(1){
			if(ggb.find(gga)==-1){
				break;
			}
			int t=ggb.find(gga)+1;
			for(int i=t;i<=sa.size();i++){
				ggb[i]='@';
			}
			sum++;	
		}
		cout<<sum<<" "<<f; 
	}
	return 0;
}

整体十分凌乱,变量名命名也不规范,但还认得出来
当时我的大体思路就是,先判断这个单词有没有在这个句子中出现过,然后再具体查找。找的时候如果在句子中还有这个单词,那么就把单词数量累加一次,再将这个单词“遮起来”,然后一直找,直到这个单词在句子中找不到为止。
但不知道什么原因,这个while循环在一直执行,我也懒得找,干脆重写了一个

新的代码思路是这样的:

特判是一样的,只是后面发生了改变。我们知道,一个位置的单词在找到后,就没有利用价值了,我们就可以将他残忍的抛弃,可以从他后面一个位置来找,同样不会重复或漏掉。

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	string sa;
//	getline(cin,sa);
	cin>>sa;
	getchar();//吞掉多的换行符
	string s;
	getline(cin,s);
	for(int i=0;i<sa.size();i++){
		if(sa[i]>='A'&&sa[i]<='Z'){
			sa[i]+=32;
		}
	}
	for(int i=0;i<s.size();i++){
		if(s[i]>='A'&&s[i]<='Z'){
			s[i]+=32;
		}
	}
	int sum=0;
	int f;
	string gga=' '+sa+' ';//确保找的是单词 
	string ggb=' '+s+' ';
	if(ggb.find(gga)==-1){
		cout<<-1;
	}else{
		f=ggb.find(gga);
		int t=ggb.find(gga);
		while(t!=-1){
			t=ggb.find(gga,t+1);
			sum++;	
		}
		cout<<sum<<" "<<f; 
	}
	return 0;
}

代码仅供参考

标签:样例,cin,单词,给定,文章,sa,统计
From: https://www.cnblogs.com/zzy123456/p/17726224.html

相关文章

  • 【5.0】Pandas描述性统计
    【一】PythonPandas描述性统计描述统计学(descriptivestatistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。Pandas库正是对描述统计学知识完美应用的体现,可以说如果没......
  • crash —— 获取系统内存使用统计数据
    crash>kmem-iPAGESTOTALPERCENTAGETOTALMEM197646761754GB----FREE33983015129.6GB17%ofTOTALMEMUSED163663746624.3GB82%ofTOTALMEMSHARED139137......
  • crash —— 获取系统的磁盘IO统计数据
    crash的dev命令可以获取系统磁盘IO的统计数据。获取所有磁盘的IO统计数据crash>dev-dMAJORGENDISKNAMEREQUEST_QUEUETOTALASYNCSYNC8ffff88de95d51000sdmffff88de94a90000653791776636038ffff88deb2396800sd......
  • DM8统计信息介绍
    1.适用范围DM82.统计信息概述统计信息主要是描述数据库中表和索引的大小数以及数据分布状况等的一类信息。比如:表的行数、块数、平均每行的大小、索引的高度、叶子节点数以及索引字段的行数等。统计信息对于CBO(基于代价的优化器)生成执行计划具有直接影响。例如在嵌套循环连接(链接)......
  • # yyds干货盘点 # ChatGPT 实用小案例分享——使用Python重命名附件和统计发票合计金
    大家好,我是皮皮。一、前言前几天在【志军】的星球看到了一个有意思的ChatGPT分享,正好喝Python相关的,一起来看看吧。ChatGPT实用小案例分享。如果你在高德或者滴滴上申请过开票,应该知道它们会给我们发一封邮件,发票和行程单都会放在附件中。由于高德是聚合平台,背后有很多网约车平台,......
  • Python中统计、拷贝等方法的使用
    一、统计方法的使用#coding=utf-8#统计出list中正数和负数的个数list=[1,2,3,-1,-2,-3]#count()函数--统计列表中某个元素出现的次数#print(list.count(2))#len()函数--统计列表长度即列表中的元素总个数#print(len(list))list1=[iforiinlistifi>0]print(l......
  • 1.统计出场率最高的三位英雄
    数据库考核文件要求:专业,班级,姓名。例如:计算111张三.md考核标准:格式及内容,请遵守markdown文件的语法。请填写正确的SQL语句,而不仅仅是结果。1统计出场率最高的三位英雄字段要求:英雄名称,出场次数SELECThero英雄名称,COUNT(hero)出场次数FROMmatch_infoGROUPBY英......
  • 【C#】【Python】【实例】统计多个文件夹下的图片
    因工作需要繁琐的进行同一目录多个文件夹下的图片统计,便使用代码来解决。需求:统计的是多少个文件夹包含了图片,并非是统计有多少张图。 我们先用Python来创建一个现场环境(巩固巩固py知识):1importos23#根目录4root_path=r"C:\Users\Desktop\1111"56forit......
  • 安防监控视频AI智能分析网关:人流量统计算法的应用场景汇总
    TSINGSEE青犀人流量检测算法是内置在智能分析网关中的一种能够通过AI分析和计算人群数量以及密度的算法技术,在提升城市管理效率、改善用户体验和增加安全性方面发挥着重要作用。人流量检测算法在许多领域都有广泛的应用,如智慧城市、智慧交通、智慧景区等。人流量检测算法在一网......
  • 部署Nginx网站服务实现访问状态统计以及访问控制功能
    部署Nginx网站服务实现访问状态统计以及访问控制功能 精选 原创小樱桃Cherry2018-06-2016:13:53博主文章分类:web服务及群集©著作权文章标签Nginx状态统计访问控制文章分类运维阅读数8135Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTT......