统计连续字符-2022年全国青少年信息素养大赛Python国赛第7题

news2024/11/24 11:23:03

[导读]:超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲,这是超平老师解读Python编程挑战赛真题系列的第9讲。

全国青少年信息素养大赛(原全国青少年电子信息智能创新大赛)是“世界机器人大会青少年机器人设计与信息素养大赛”赛事之一,由中国电子学会主办,包含很多赛项,大赛自2013年举办,已连续成功举办八届,已正式入围“2022-2025学年面向中小学生的全国性竞赛活动名单”。 

大赛旨在激发广大青少年的科学兴趣和想象力,培养钻研探究、创新创造的科学精神和实践能力,促进青少年科技创新活动的广泛开展,发现和培养一批具有科研潜质和创新精神的青少年科技创新后备人才。

大赛主要竞赛类别包括电子科技、智能机器人、软件编程三类,全国青少年Python编程挑战赛就属于其中的软件编程类。

一.赛事说明

2021-2022年(第8届)Python挑战赛赛程分为初赛、复赛和总决赛三个阶段。初赛是资格赛,复赛是地方选拔赛,总决赛是全国各地选拔的精英汇聚在一起进行PK。

2021-2022年全国青少年Python编程挑战全国总决赛于2022年8月27日正式举行。一共是10道编程题,每道题100分,满分1000分,考试时间是120分钟。

10道编程题分别如下:

  • 分苹果

  • 韩信点兵

  • 借书问题

  • 四位数密码

  • 邮票面值

  • 组合取球

  • 统计连续字符

  • n的n次方

  • 海盗搜身

  • 父与子

超平老师将分10讲对每道题进行详细的解读和剖析,今天要解读的是第7题,统计连续字符。

二.题目描述

题目背景:

依次输入一个字符串s与一个数字n,寻找字符串中所有连续出现n次的字符,统计符合要求的字符数量并输出。

例如输入abbcccdddd,输入2,字符串中连续出现2次的字符包括b、c、d这3种。

输入描述:

第一行一个字符串(保证有连续的n个字符)

第二行一个数字n

输出描述:

符合要求的字符数量

样例输入:

abbcccdddd

2

样例输出:

3

注意:

input()内不添加任何参数

只有完全正确才可提交,若无法点击提交说明答题存在错误,可及时进行检查并修改

三.思路分析

本题的思路非常直观,就是先固定好第一个字符的位置,然后从下一个字符开始逐个比较,直到碰到不相等的情况,就说明找到一个连续字符串了。接着把当前字符作为新的第一个字符,重复上述过程,直到整个字符串遍历完毕。

在这个过程中,需要使用两个变量来记录每个字符串的起点和终点,在算法编程中,通常称之为指针。我们以字符串”abbcccdddd“为例,说明上述过程。

首先从第一个字母a开始,如图:

其中,蓝色指针i表示起点,红色指针j表终点,所以对于字母a来说,只有一个是连续的,代码层面,直接使用切片操作s[i:j]就可以了。

接下来,将蓝色指针i移到j的位置,然后逐个比较,直到碰到不等于b的情况,如图:

同理,直接使用切片操作s[i:j]就可以得到连续的字符串"bb"。

继续将蓝色指针i移到j的位置,逐个比较,直到碰到不等于c的情况,如图:

仍然使用切片操作s[i:j]取出连续字符串”ccc“。

最后,将将蓝色指针i移到j的位置,逐个比较,直到碰到不等于d的情况,或者到字符串结束,如图:

注意,红色指针j已经指向最后一个位置了,所以这一次结束的条件不再是不等于d了,而是字符串结束了。

每获取到一个连续字符串,就将其保存到一个列表中,如下:

['a','bb','ccc','dddd']

然后,就可以遍历列表,根据n的值,将字符串长度大于等于n的统计出来即可。

接下来,我们进入具体的编程实现环节。

四.编程实现

根据上面的思路分析,我们编写代码如下:

# 获取字符串
s = input()
# 获取数字n
n = int(input())

res = []
i = 0
while i < len(s): 
    j = i + 1
    # 判断前后连个字符是否相等
    while j < len(s) and s[i] == s[j]:
        j += 1
    # 将连续字符取出来,存入到列表中  
    res.append(s[i:j])
    i = j

# 对结果进行过滤
res = [r for r in res if len(r) >= n]

# 输出次数
print(len(res))

简单说明三点:

1). 代码中的变量i表示蓝色指针i,变量j表示红色指针j;

2). 每找到一个连续字符串,就立刻将指针i移到指针j处,第15行代码 i = j 的作用就在于此;

3). 第18行代码运用了列表推导式,对结果进行了过滤,将满足条件的字符串保存到列表res中。 

五.总结与思考

本题难度中等,考查的知识点主要包括:

  • 输入输出函数;

  • 循环嵌套语句;

  • 列表操作;

  • 指针的概念及实现方式;

解决本题的关键在于对双指针的理解,尤其是指针移动的过程,建议使用画图的方式来梳理思路。

超平老师给你留一道思考题,在上面的代码中,我们使用了两个while来实现循环嵌套,能使用for循环来替代吗,为什么呢?

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

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

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

相关文章

2.1 线性表的逻辑结构与存储结构

在之前的数据结构知识铺垫2&#xff1a;物理结构与逻辑结构一文中, 我们介绍了物理结构与逻辑结构, 物理结构即存储结构. 本篇文章我们着重探讨一下线性表的逻辑结构与存储结构. 1. 线性表的逻辑结构 图1. 线性表的逻辑结构 线性表是具有相同特性的数据元素的有限序列, 每个元…

SHELL CLASH配置规则

本地环境 小米AX1800路由器&#xff0c;旧版&#xff08;黢黑的四方立柱体&#xff0c;没有天线&#xff09;&#xff0c;已降级至固定版本小米 AX1800 1.0.336 问题 因为某些网络原因&#xff0c;在WiFi中安装了shell clash作为互联网代理&#xff0c;使用部分软件时提示网…

ChatGPT在大学里该怎么用?24所英国顶级大学宣布立场!

自从ChatGPT横空出世以来&#xff0c;许多行业都被得到赋能。而在教育行业&#xff0c;许多大学生把它视为写作业的“神器”&#xff1a;节省查阅复杂文献的时间、编写简单的Python代码、辅助学生理解知识点&#xff0c;甚至直接“生成”论文...... 但这些行为&#xff0c;学校…

个人使用:Windows下 OpenCV 的下载安装(2021.12.4详细)

一、下载OpenCV   到OpenCV官网Release(发布)板块下载OpenCV-4.5.4 Windows。 下载后是这样的 然后双击他&#xff0c;解压&#xff0c;就是大佬们说的安装&#xff0c;实质就是解压一下&#xff0c;解压完出来一个文件夹&#xff0c;其他什么也没发生。你把这个文件夹放在哪…

4、Kubernetes 架构、理解 k8s 架构

kubeadm 用于初始化 Cluster。 kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。 kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。 Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Ku…

【Linux从入门到精通】gdb调式技巧大全

本篇文章会对开发工具:gdb调试器的使用进行讲解。希望本篇文章会对你有所帮助。 目录 一、gdb简单介绍 二、gdb 调试 2、1 加入调试信息 2、2 调试命令 2、2、1 gdb可执行程序——进入调式 2、2、2 l行号/函数名——显示代码 2、2、3 b行号/函数名——打断点 2、2、4 infob——…

mysql数据库的定时备份脚本(docker环境和非docker环境)

一、非docker安装的MySQL MySQL作为一种常用的数据库管理系统,拥有着众多的优秀特性,如高性能、高可靠性、高可扩展性等。然而,在数据备份上,也需要我们进行一定的处理,这样才能保证数据的安全性。因此,在这里我们将介绍如何定时备份MySQL数据库。 我们可以通过MySQL自…

Filebeat+ELK (grok、mutate、mutiline、date)详解

目录 一&#xff1a;FilebeatELK 部署 1&#xff0e;安装 Filebeat 2&#xff0e;设置 filebeat 的主配置文件 3.在 Logstash 组件所在节点上新建一个 Logstash 配置文件 4.访问登录 二&#xff1a;grok 正则捕获插件 1、内置正则表达式调用 2、举例说明 3、自定义表达式…

飞腾开发者平台上线龙蜥专区,为开发者提供硬核技术支持

开源的本质在“人”&#xff0c;开源社区是由一个个做贡献的人构建起来的。近日&#xff0c;飞腾开发者平台联合国内领先的操作系统开源社区——龙蜥社区&#xff0c;推出龙蜥专区&#xff0c;旨在为广大开源爱好者提供社区前沿技术和一线开源文档。 龙蜥专区&#xff08;专区…

从低效率到高效率,开源大数据技术助力职场办公质的飞跃!

在办公流程化管理越来越流行的今天&#xff0c;如何让职场办公实现高效率飞跃和发展&#xff1f;应用开源大数据技术和低代码技术平台&#xff0c;可以实现这一目的&#xff0c;助力企业从传统的开发模式中剥离出来&#xff0c;实现高效率办公发展。今天&#xff0c;趁着大好契…

天池大赛中药说明书实体识别挑战冠军方案开源(一)方案及模型原理说明

目录 Introduction 导言赛题背景任务描述数据探索分析 核心思路数据预处理Baseline: BERT-CRF优化1&#xff1a;对抗训练优化2&#xff1a;混合精度训练&#xff08;FP16&#xff09;优化3&#xff1a;多模型融合优化4&#xff1a;半监督学习其他无明显提升的尝试方案最终线上成…

Linux开发工具【gdb】

Linux开发工具【gdb】 程序的发布方式有两种&#xff0c;debug模式&#xff08;调试版本&#xff09;和release模式&#xff08;发布版本&#xff09;。Linux下gcc/g出来的二进制程序&#xff0c;默认是release模式。无法保证我们的代码有时候会出现问题&#xff0c;这时就要使…

博客质量分计算——发布 version 5.0

目录 1. 背景2. 质量分 version 5.02.1 version 4 存在问题分析2.2 version 5.0 改进2.3 消融分析2.3.1 正向积极得分消融实验2.3.2 正向累积得分单变量实验2.3.3 非高分文章消融实验 2.4 V4 和 V5.0 版本质量分分布对比 3. 总结4. 参考 1. 背景 博客质量分顾名思义是用于衡量…

最新CMS指纹识别技术

点击星标&#xff0c;即时接收最新推文 本文部分节选于《web安全攻防渗透测试实战指南&#xff08;第二版&#xff09;》&#xff0c;即将上架&#xff0c;敬请期待。 指纹识别 1&#xff0e;CMS简介 CMS&#xff08;Content Management System&#xff0c;内容管理系统&#x…

微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录

数据绑定&#xff0c;事件绑定&#xff0c;事件传参与数据同步 1. 数据绑定1.1. 在data中定义数据1.2. 在wxml中渲染数据 &#xff08;mustache语法&#xff09; 2. 事件绑定2.1. 事件2.2. 常用的事件2.3. 事件对象的属性列表2.4. target 和 currentTarget的区别 3. 事件传参与…

YOLOv5/v7 引入渐进特征金字塔网络 AFPN 结构 | 《2023年6月28日最新发表》

包含 yolov5-AFPN.yaml 和yolov7-AFPN.yaml 论文地址:https://arxiv.org/pdf/2306.15988.pdf 代码地址:https://github.com/gyyang23/AFPN 多尺度特征在目标检测任务中对于编码具有尺度变化的对象非常重要。一种常见的多尺度特征提取策略是采用经典的自顶向下和自底向上的特…

53 # 反转二叉树

由于我学习的视频这一节跟上一节重复。没找到该节的学习资源&#xff0c;我自己参考网上实现的&#xff0c;有问题还请指出。 如图&#xff0c;下面实现反转 // 节点 class Node {constructor(element, parent) {this.element element; // 存的数据this.parent parent; // …

Stable Diffusion - ReV Animated v1.2.2 的 2.5D 模型与提示词

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131655644 ReV Animated v1.2.2 模型能够创建类似 2.5D 的图像生成。该模型是 checkpoint 合并&#xff0c;是其他模型的产物&#xff0c;以创建源…

微擎后台getshell,低权限也可以

/web/index.php?csite&aeditor 这个文件可以编辑html&#xff0c;然后前台会解析成php 没测试最新版 比如编辑专题&#xff1a;/web/index.php?csite&aeditor&dopage&multiid0 上架抓包 改html内容为php 复制前台url 访问之 博客原文&#xff1a; 微擎后…

Unity经营类美食小摊小游戏

Unity经营类美食小摊小游戏 挺有意思的小游戏 关卡页面 游戏主页面 有顾客上门 需要给顾客搭配他们想要的美食 会不断地有顾客过来&#xff0c;这个时候就考验手速的时候了&#xff0c;真实模拟经营 服务到位立马有钱 项目地址&#xff1a; https://download.csdn.net/downl…