【蓝桥杯】3514字串简写

embedded/2025/3/16 4:10:18/

在这里插入图片描述

暴力

发现只能通过20%测试点。

k = int(input())
s, c1, c2 = input().split()
le = len(s)
s = [0] + [i for i in s] # 1 -- lecnt = 0
for i in range(1, le - (k-1) +1):if s[i] == c1:for j in range(i+(k-1),le+1):if s[j] == c2:cnt +=1
print(cnt)

优化

 if s[i] == c1:for j in range(i+(k-1),le+1):if s[j] == c2:cnt +=1

这一步分其实在求区间range(i+(k-1),le+1)c2的个数,由于要遍历所以很费时。想到可以用前缀和提前处理这一部分,节省一层循环。

k = int(input())
s, c1, c2 = input().split()
le = len(s)
s = [0] + [i for i in s] # 1 -- lepre = [0 for i in range(le+1)]
for i in range(1,le+1):if s[i] == c2:pre[i] = pre[i-1] + 1else:pre[i] = pre[i-1]
# print(pre)
cnt = 0
for i in range(1, le - (k-1) +1):if s[i] == c1:cnt += pre[-1] - pre[i+(k-1)-1] 
print(cnt)

总结

利用前缀和来替换掉循环。
这题多了一个长度k的限制条件,写起来要处理好下标索引。


http://www.ppmy.cn/embedded/172958.html

相关文章

一、docker的安装

一、docker桌面 二、docker的配置文件 1、docker配置文件位置/etc/docker/daemon.json 使用json格式,graphdata-root {"graph":"/deploy/docker","registry-mirrors": ["https://8auvmfwy.mirror.aliyuncs.com"],"…

论文分享 | HE-Nav: 一种适用于复杂环境中空地机器人的高性能高效导航系统

阿木实验室始终致力于通过开源项目和智能无人机产品,为全球无人机开发者提供强有力的技术支持,并推出了开源项目校园赞助活动,助力高校学子在学术研究与技术创新中取得更大突破。近日,香港大学王俊铭同学,基于阿木实验…

@RestControllerAdvice注解

RestControllerAdvice RestControllerAdvice 是 Spring Framework(3.2)和 Spring Boot 中用于全局处理控制器层异常和统一响应格式的注解。它结合了 ControllerAdvice 和 ResponseBody 的功能,能够拦截控制器方法抛出的异常,并以 …

使用Python爬虫根据关键词获取衣联网商品列表:实战指南

在电商领域,通过关键词搜索商品并获取商品列表是常见的需求。衣联网作为知名的电商平台,提供了丰富的服装商品资源。本文将详细介绍如何使用Python编写爬虫程序,根据关键词获取衣联网商品列表,并确保爬虫行为符合平台规范。 一、…

解锁下一代开发范式:IntelliJ Idea AI插件全景实战与未来展望

1、引言:AI重构开发工作流 随着大语言模型(LLM)技术的爆发式发展,编程工具正经历从“辅助工具”到“智能伙伴”的质变。据开发者社区统计,2025年已有超80%的开发者将AI插件深度融入日常工作流,而IntelliJ …

【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#

今天田辛老师为大家带来一篇关于在VMWare虚拟机上安装Ubuntu系统的详细教程。无论是学习、开发还是测试,虚拟机都是一个非常实用的工具,它允许我们在同一台物理机上运行多个操作系统。Ubuntu作为一款开源、免费且用户友好的Linux发行版,深受广…

Android 手机耗电数据分析工具介绍

和你一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中 电量 的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、安装Battery Historian二、收集Batterystats 数据三、使用Battery Historian分析数据四、Batterystats 额…

Linux第三次作业

一.创建根目录结构中的所有的普通文件 使用 mkdir -pv [路径] 创建目录文件 使用 touch [路径] 创建普通文件 二.列出所有账号的账号名 用 cat 命令查看在 /etc/passwd 中的用户信息 用 cut -d [ ] -f[ ] 命令切割出所有用户名 三.将/etc/passwd中内容按照冒号隔开的第三个字符…