【刷题】<洛谷> P1308 统计单词数

news/2024/11/19 23:22:26/

题目描述

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

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

输入格式

共 2 行。

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

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

输出格式

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


思路

匹配单词如果给定单词仅是文章中某一单词的一部分则不算匹配

可以先分别用两个string类型的变量(mubiao和wenben)来接收这两行字符串,然后在这两个字符串的前后都分别加上一个空格,这样就可以避免搜索到的单词是文章中某一单词的一部分

string mubiao; getline(cin, mubiao);
string wenben; getline(cin, wenben);string mubiao_plus = ' ' + mubiao + ' ';
string wenben_plus = ' ' + wenben + ' ';

不区分大小写

可以将两行字符串都转换成小写或大写,这样只需要查找一次就行了

transform(mubiao.begin(), mubiao.end(), mubiao.begin(), ::tolower);
transform(wenben.begin(), wenben.end(), wenben.begin(), ::tolower);

或者改变mubiao的第一个单词的大小写,进行两次搜索,然后将两次的数量相加

if (mubiao[0] < 97) mubiao[0] = mubiao[0] + 32;
else mubiao[0] = mubiao[0] - 32;

代码

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;int main()
{   string mubiao; getline(cin, mubiao);string wenben; getline(cin, wenben);transform(mubiao.begin(), mubiao.end(), mubiao.begin(), tolower);transform(wenben.begin(), wenben.end(), wenben.begin(), tolower);string mubiao_plus = ' ' + mubiao + ' ';string wenben_plus = ' ' + wenben + ' ';int mubiao_plus_lenth = mubiao_plus.size();vector<int> suoyin; int kkk = 0;for (;;){int temp = wenben_plus.find(mubiao_plus, kkk);if (temp == -1){break;}suoyin.push_back(temp);kkk = temp + mubiao_plus_lenth-1;}sort(suoyin.begin(), suoyin.end());int nums = suoyin.size();if (nums==0){cout << -1;}else{cout << nums << ' ' << suoyin[0];}return 0;
}


http://www.ppmy.cn/news/1211557.html

相关文章

人工智能基础_机器学习024_梯度下降进阶_L1正则可视化图形---人工智能工作笔记0064

然后我们就来用代码实现一下L1正则的可视化,我们来看看 首先导入 import numpy as np 数学计算 import matplotlib.pyplot as plt 画图用的 然后我们把L1正则的公式写出来 可以看到L1的正则 其实就是w1和w2的绝对值相加对吧 然后这里我们写一个公式: f(x,y) = |x|+|y| …

Flink之Catalog

Catalog Catalog概述Catalog分类 GenericInMemoryCatalogJdbcCatalog下载JAR包及使用重启操作创建Catalog查看与使用Catalog自动初始化catalog HiveCatalog下载JAR包及使用重启操作hive metastore服务创建Catalog查看与使用CatalogFlink与Hive中操作自动初始化catalog 用户自定…

U盘不可以访问的维护

u盘打不开&#xff0c;可按下图&#xff0c;设置&#xff1a;winR→gpedit.msc&#xff1b;配置“管理模板”→“系统”→“可移动存储访问”→“所有可移动存储类”。 然后&#xff0c;选择“未配置”&#xff0c;如下图

Flink之Java Table API的使用

Java Table API的使用 使用Java Table API开发添加依赖创建表环境创建表查询表输出表使用示例 表和流的转换流DataStream转换成表Table表Table转换成流DataStream示例数据类型 自定义函数UDF标量函数表函数聚合函数表聚合函数 API方法汇总基本方法列操作聚合操作Joins合并操作排…

SpringCloud——服务注册——Zookeeper

没有安装Centos7&#xff0c;所以无法安装Zookeeper。 提供者模块代码&#xff1a; https://gitee.com/lixiaogou/cloud2020/tree/master/cloud-provider-payment8004 消费者模块代码&#xff1a; https://gitee.com/lixiaogou/cloud2020/tree/master/cloud-consumerzk-ord…

如何对element弹窗进行二次封装

方式一使用$refs 个人比较喜欢用这种的 通过$refs打开的同时 还能给弹窗组件传参 一些框架使用的也是这种方式 父组件 <template><div><el-button type"text" click"handleDialogOpen">打开嵌套表单的 Dialog</el-button><Dia…

【洛谷 P1478】陶陶摘苹果(升级版)题解(多重集合+贪心算法)

陶陶摘苹果&#xff08;升级版&#xff09; 题目描述 又是一年秋季时&#xff0c;陶陶家的苹果树结了 n n n 个果子。陶陶又跑去摘苹果&#xff0c;这次他有一个 a a a 公分的椅子。当他手够不着时&#xff0c;他会站到椅子上再试试。 这次与 NOIp2005 普及组第一题不同的…

AI批量剪辑矩阵托管系统----源码技术开发

AI批量剪辑矩阵托管系统----源码技术开发 抖音账号矩阵系统是基于抖音开放平台研发的用于管理和运营多个抖音账号的平台。它可以帮助用户管理账号、发布内容、营销推广、分析数据等多项任务&#xff0c;从而提高账号的曝光度和影响力。 具体来说&#xff0c;抖音账号矩阵系统可…