【NOIP普及组】统计单词数

news2024/11/14 12:01:41

【NOIP普及组】统计单词数


💐The Begin💐点点关注,收藏不迷路💐

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

输入

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

输出

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

样例输入

To
to be or not to be is a question

样例输出

2 0

提示

【数据范围】
1≤单词长度≤10。
1≤文章长度≤1,000,000。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char targetWord[100];  // 存储要查找的目标单词
    char article[1000];    // 存储输入的文章内容

    int targetWordLen;    // 目标单词的长度
    int articleIndex = -1; // 当前扫描文章的下标,初始化为 -1
    int firstOccurrence = -1; // 目标单词首次出现的下标,初始化为 -1
    int occurrenceCount = 0; // 目标单词在文章中出现的次数,初始化为 0

    char currentChar;
    int i;

    // 读取要查找的目标单词,并检查返回值
    if (scanf("%s", targetWord)!= 1) {
        fprintf(stderr, "输入错误:无法正确读取目标单词\n");
        return 1;
    }

    // 吸收换行符,因为接下来要读取文章内容,防止换行符在读取文章时造成影响
    getchar();

    // 将目标单词中的大写字母转换为小写字母
    targetWordLen = strlen(targetWord);
    for (i = 0; i < targetWordLen; i++) {
        if (targetWord[i] >= 'A' && targetWord[i] <= 'Z') {
            targetWord[i] += 32;
        }
    }

    // 标记是否开始输入文章中的新单词,初始化为0,表示未开始
    int newWordStarted = 0;
    i = 0;

    // 循环读取文章内容,直到遇到文件结束(EOF)
    while ((currentChar = getchar())!= EOF) {
        articleIndex++;

        if (currentChar ==' ') {  // 如果读取到空格
            if (newWordStarted == 0) {
                continue;  // 如果还未开始输入新单词,跳过本次循环,继续读取下一个字符
            } else {
                article[i] = '\0';  // 给当前单词添加字符串结尾标记'\0'

                if (strcmp(targetWord, article) == 0) {  // 如果目标单词和当前读取的单词相同
                    if (firstOccurrence == -1) {
                        firstOccurrence = articleIndex - strlen(article);
                    }
                    occurrenceCount++;  // 出现次数加1
                }

                i = 0;
                newWordStarted = 0;
            }
        } else {
            newWordStarted = 1;
            if (currentChar >= 'A' && currentChar <= 'Z') {
                currentChar += 32;
            }
            article[i] = currentChar;
            i++;
        }
    }

    if (occurrenceCount > 0) {  // 如果目标单词在文章中出现过
        printf("%d %d\n", occurrenceCount, firstOccurrence);
    } else {
        printf("-1\n");  // 如果目标单词未在文章中出现过
    }

    return 0;
}

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2236735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArkTs语言常用数据类型和使用说明及示例(9种常用,7种非常用)

具体请前往&#xff1a;ArkTs语言基本数据类型及使用说明--包括9种常用变量类型和7种非常用类型

“双十一”电商狂欢进行时,在AI的加持下看网易云信IM、RTC如何助力商家!

作为一年一度的消费盛会&#xff0c;2024年“双十一”购物狂欢节早已拉开帷幕。蹲守直播间、在主播热情介绍中点开链接并加购&#xff0c;也已成为大多数人打开“双11”的重要方式。然而&#xff0c;在这火热的购物氛围背后&#xff0c;主播频频“翻车”、优质主播稀缺、客服响…

机器学习中的分类:决策树、随机森林及其应用

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

ETL架构怎么选?全量、增量还是实时流式?

一、 ETL &#xff1a; 基本定义&#xff1a;ETL 是将业务系统的数据经过抽取&#xff08;Extract&#xff09;、清洗转换&#xff08;Transform&#xff09;之后加载&#xff08;Load&#xff09;到数据仓库的过程&#xff0c;目的是将企业中分散、零乱、标准不统一的数据整合…

特色3D打印机stm32迷你8轴双核心主板

我自己设计的3D打印机主板 1. 这是一块迷你的8轴主板, 主板尺寸为100mm*75mm, 使用一个8cm静音风扇散热足够了2. 这是一个带有保护的板子, 驱动上的gpio具有过压保护功能, 能够直接抗住24V的冲击, 意味着一个驱动炸了, 板子不烧, 并且其他的驱动也没事, 主板支持自动关机3. 8…

【2】GD32H7xx 串口Idle + DMA接收不定长数据

目录 1. IDLE中断相关介绍2. D-Cache与DMA同时使用2.1 I-Cache与D-Cache2.2 D-Cache与DMA同时使用时的数据一致性问题2.2.1 CPU读取DMA写入到SRAM的数据2.2.2 DMA读取CPU写入到SRAM的数据 3. Uart Idle DMA收发程序4. 程序测试 1. IDLE中断相关介绍 在 GD32H7xx MCU 中&#…

证书学习(六)TSA 时间戳服务器原理 + 7 个免费时间戳服务器地址

目录 一、简介1.1 什么是时间戳服务器1.2 名词扩展1.3 用时间戳标记顺序1.4 7 个免费TSA时间戳服务器地址(亲测可用)1.5 RFC 3161 标准二、时间戳原理2.1 时间戳服务工作流程2.2 验证工作流程2.3 举个例子2.4 时间戳原理总结三、代码实现3.1 curl 命令请求时间戳3.2 java 代码…

一步一步从asp.net core mvc中访问asp.net core WebApi

"从asp.net core mvc中访问asp.net core WebApi"看到这个标题是不是觉得很绕口啊&#xff0c;但的确就是要讲一讲这样的访问。前面我们介绍了微信小程序访问asp.net core webapi(感兴趣的童鞋可以看看前面的博文有关WEBAPI的搭建)&#xff0c;这里我们重点不关心如何…

信捷 XD PLC C语言 FB和FC 不同

信捷 XD PLC 的C语言下 FB和FC 的使用&#xff0c;如果你有困惑&#xff0c;本文可能会帮到你&#xff01; 调用FB要带后缀_Body的&#xff0c;这个地方很容易忽视和出错。 不同之处FBFC可以在全局变量表中建立此类型对象可以1个&#xff0c;也可以多个不可以参数类型及数量有…

「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现

本篇将带你实现一个滑动选择器应用&#xff0c;用户可以通过滑动条选择不同的数值&#xff0c;并实时查看选定的值和提示。这是一个学习如何使用 Slider 组件、状态管理和动态文本更新的良好实践。 关键词 UI互动应用Slider 组件状态管理动态数值更新用户交互 一、功能说明 在…

共享汽车管理:SpringBoot框架的高效实现

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足&#xff0c;创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系…

艾体宝产品丨加速开发!Redis Copilot智能助手上线

我们最近发布了 Redis Copilot&#xff0c;旨在帮助开发者更加高效地使用 Redis 构建应用。提升应用性能&#xff0c;简化构建过程是我们不懈的追求。Redis Copilot 正是为此而生的人工智能助手&#xff0c;助力开发者迅速掌握 Redis 的使用技巧。现在您可以在 Redis Insight 中…

阿里云centos7.9服务器磁盘挂载,切换服务路径

项目背景 1、项目使用的服务器为阿里云centos7.9&#xff0c;默认的磁盘为vda&#xff0c;文件系统挂载在这个磁盘上&#xff0c;项目上使用的文件夹为/home/hnst/uploadPath 2、vda使用率已达到91% 3、现购置一块新的磁盘为vdb&#xff0c;大小为2T 目的 切换服务所使用的…

Electron + Vue3 开发桌面应用+附源码

什么是 Electron&#xff1f; Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的框架。它由 GitHub 开发并维护&#xff0c;允许开发者使用现代 Web 技术创建原生应用程序。Electron 结合了 Chromium 渲染引擎和 Node.js 运行时环境&#xff0c;使得开发…

【Leecode】Leecode刷题之路第44天之通配符匹配

题目出处 44-通配符匹配-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 44-通配符匹配-官方解法 前言 本题与10. 正则表达式匹配非常类似&#xff0c;但相比较而言&#xff0c;本题稍…

单元/集成测试解决方案

在项目开发的前期针对软件单元/模块功能开展单元/集成测试&#xff0c;可以尽早地发现软件Bug&#xff0c;避免将Bug带入系统测试阶段&#xff0c;有效地降低HIL测试的测试周期&#xff0c;也能有效降低开发成本。单元/集成测试旨在证明被测软件实现其单元/架构设计规范、证明被…

Linux案例:DNS服务器配置

Linux案例&#xff1a;DNS服务器配置 实验一&#xff1a;正向解析 服务端配置&#xff1a; [rootserver ~]# setenforce 0 [rootserver ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.70.131/24 ipv4.gateway 192.168.70.2 ipv4.dns 114.114.114.11…

Linux常用的100个命令

掌握常用的Linux常用命令是作为码农的基本素养&#xff0c;无论你从事软件开发或者运维的的哪个细分领域。本文言简意赅&#xff0c;可作为指导书收藏。 Linux常用命令的分类&#xff1a; 基本文件操作权限与用户管理文件搜索与系统状态网络管理压缩与打包系统管理与维护磁盘与…

数据挖掘全景:从基础理论到经典算法的深度探索

1 绪论--1.1 数据挖掘的概念和任务 1. (单选题)目前数据分析与挖掘领域的现实情况描述不正确的是&#xff08;&#xff09; A. 信息爆炸 B. 数据爆炸 C. 信息贫瘠 D.数据收集能力远远超过人们的分析和理解能力 2. (单选题)你认为下面哪种数据对于数据挖掘算法来说最简单最…

Qt Udp的组播(多播)、广播和单播

UDP通讯的基本概念和特点‌ UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是‌TCP/IP协议族中的一种无连接协议&#xff0c;主要用于那些对实时性要求较高而可靠性要求较低的应用场景。UDP的主要特点包括&#xff1a; ‌无连接‌&#xff1a;…