leetcode:定长字串中元音的最大数目

news2024/11/27 4:32:16

定长字串中元音的最大数目

medium

给你字符串 s 和整数 k

请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。

英文中的 元音字母 为(a, e, i, o, u)。

示例 1:

输入:s = "abciiidef", k = 3
输出:3
解释:子字符串 "iii" 包含 3 个元音字母。

示例 2:

输入:s = "aeiou", k = 2
输出:2
解释:任意长度为 2 的子字符串都包含 2 个元音字母。

示例 3:

输入:s = "leetcode", k = 3
输出:2
解释:"lee"、"eet" 和 "ode" 都包含 2 个元音字母。

示例 4:

输入:s = "rhythms", k = 4
输出:0
解释:字符串 s 中不含任何元音字母。

示例 5:

输入:s = "tryhard", k = 4
输出:1

提示:

  • 1 <= s.length <= 10^5
  • s 由小写英文字母组成
  • 1 <= k <= s.length

解题思路
本题最简单的思路就是滑动窗口,每次滑动向后滑动一个位置。而每滑动一次,只涉及两个字符的变动,即:

本次滑动新加进来的字符是否是元音
本次滑动去掉的字符是否是元音

image-20230716183243331

示例: 1、假设当前窗口的元音个数是n,那么在滑动时

如果当前窗口的起始位置是元音,那么传递到下一个窗口的元音个数m = n - 1
如果当前窗口的起始位置不是元音,那么传递到下一个窗口的元音个数就是m = n
2、接着,下一个窗口判断新加进来的元素是否是元音。 如果是,则下一个窗口的元音个数就是m + 1,否则为m

3、每个窗口判断当前元音个数tmp是否大于截止当前的最大值result,如果是则result = tmp 4、继续下一个窗口计算

有一个优化点:如果当前窗口的元音个数= k,其实就没必要再继续滑动了,直接return

复杂度分析
时间复杂度:O(n)
只需要最多遍历一遍所有字符

空间复杂度:O(1)
只需要常数空间来存储几个常量

代码
理解了原理,代码就很简单了

普通版:(时间很慢未超时)

class Solution:
    def maxVowels(self, s: str, k: int) -> int:
        start = maxvowels = _vowels = 0
        vowels = {'a', 'e', 'i', 'o', 'u'}
        for i, char in enumerate(s):
            cursor = s[start: i + 1]
            if len(cursor) <= k:
                if s[i] in vowels:
                    _vowels += 1
            else:
                start += 1
                if s[start - 1] in vowels:
                    _vowels -= 1
                if s[i] in vowels:
                    _vowels += 1
            maxvowels = max(_vowels, maxvowels)
        return maxvowels

优化版:(时间很快)

class Solution:
    def maxVowels(self, s: str, k: int) -> int:
        sid, tmp = 0, 0 # 第一个滑动窗口起始位置,当前窗口元音字符个数
        fid = k - 1 # 第一个滑动窗口结束位置
        mapping = {"a":1, "e":1, "i":1, "o":1, "u":1}
        for i in range(fid): # 第一个窗口现在外面判断
            if s[i] in mapping:
                tmp += 1 
        result = tmp 
        while fid < len(s):
            if s[fid] in mapping: # 判断窗口往后移动的这个元素是否是元音
                tmp += 1 # 如果是元音,则判断当前窗口元音个数与当前结果的大小
                result = tmp  if tmp > result else result
                if tmp >= k: # 如果当前窗口的元音数=k,则直接返回
                    return k 
            if s[sid] in mapping: # 判断当前窗口起始位置是否是元音
                tmp -= 1 # 将窗口起始位置的元音减去再滑动到下一个窗口
            sid += 1 #窗口向后滑动一个元素
            fid += 1 
        return result

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

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

相关文章

KBLAutoSwitch偶尔无法自动切换输入法的问题

KBLAutoSwitch&#xff08;https://github.com/flyinclouds/KBLAutoSwitch&#xff09;是一款中英文输入法自动切换软件&#xff0c;但是在使用过程中偶尔会出现无法自动切换成自己想要的输入法的问题&#xff0c;比如我将cmd窗口设为自动切换英文输入法&#xff0c;但是在使用…

计算机组成原理 期末复习

在我的博客查看&#xff1a;https://chenhaotian.top/study/computer-composition-principles-final-review/ 如果遇到 外链图片转存失败 &#xff0c;直接打开链接查看图片 计算机组成原理 期末复习 第 1 章 计算机系统概论 1.1 计算机的诞生和发展 冯诺依曼体系 1.2 计算…

LLaMA以及其扩展模型总结(一)

自从ChatGPT发布以来&#xff0c;人们看到了AGI时代的曙光&#xff0c;但是由于ChatGPT是闭源的&#xff0c;只能在官网体验和使用API进行访问&#xff0c;据OpenAI CEO说是出于AGI的安全性考虑&#xff0c;这样大大限制了很多研究人员和机构对于AGI的研究进展。Meta公司反其道…

在线转换视频格式到mp4怎么换?分享两个方法!

在日常生活和工作中&#xff0c;我们常常需要将视频文件转换为MP4格式以便于在各种设备上播放和共享。本文将介绍两种快速转换视频格式为MP4的方法&#xff0c;一种是使用记灵在线工具&#xff0c;另一种是使用一个在线转换工具。 方法一&#xff1a;记灵在线工具 记灵是一款…

LED驱动(原始架构)——STM32MP157

文章目录 硬件知识 LED 原理GPIO 引脚操作方法GPIO 模块一般结构GPIO 寄存器的一般操作 STM32MP157的GPIO操作方法先使能PLL4MPU、MCU共享GPIO模块1. 在MPU上使能某个GPIO模块2. 在MCU上使能某个GPIO模块 GPIO模块设置引脚工作模式&#xff1a;GPIO模式对于输出引脚&#xff1a…

模块化+命名空间

1.目的&#xff1a;为了让代码更好维护&#xff0c;让多种数据分类更加明确 2.修改src/store/index.js为了解决不同模块命名冲突的问题&#xff0c;将不同模块的namespaced:true&#xff0c;之后在不同页面中引入getter actions mutations state&#xff0c;需要加上所属的模块…

ADC基础进阶

ADC 啊.... 拿华大的来举例吧... 最少要知道了两个电路。 1. VERF 华大HC32F60的ADC以VREF为内部基准电压&#xff0c;如果VREFH管教悬空&#xff0c;那么实际其基准电压应该是MCU_3.3V&#xff0c;如果VREFH额外搭电路提供电压&#xff0c;应该是以其实际提供的电压为准&am…

Uber是如何解决数据一致性问题的呢?

Uber的请求流程非常复杂&#xff0c;如上图所示&#xff0c;他们使用Spanner来存储大量数据。Spanner是一个全面托管的、关键的关系型数据库服务&#xff0c;可以在全球范围内提供事务一致性和高可用性的自动同步复制。 但是&#xff0c;当扩展到数百万并发请求时&#xff0c;使…

【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析

2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B&#xff1a;美国纽约公共自行车使用量预测分析 问题一 1 题目 Citi Bike是纽约市在2013年启动的一项自行车共享出行计划&#xff0c;由“花旗银行”(Citi Bank)赞助并取名为“花旗单车”(Citi Bike)。在曼哈顿&#xff0c;布鲁克…

PID算法:标准PID算法的一些改进措施

前面的几篇文章分别分享了PID算法的原理、增量式和位置式PID算法的区别、以及过程控制中一些重要的指标&#xff0c;感兴趣的朋友可以回看之前的文章或者自行查阅资料。 在实际项目中&#xff0c;使用数字PID算法对系统的被控量进行控制的时候&#xff0c;有时候并不是仅仅的使…

面试之可重复读是否可以解决幻读

可重复读&#xff08;repeatable read&#xff09;定义:一个事务执行过程中看到的数据&#xff0c;总是跟这个事务在启动时看到的数据时是一致的。 不过理论上 是会出现幻读的&#xff0c;简单的来说幻读指的是当用户读取某一范围的数据行时&#xff0c;另外一个事务又在该范围…

一个PDF怎么拆分成几个?这几个方法轻松拆分PDF!

在现代生活与工作的环境中&#xff0c;我们常常需要以高效的方式处理包含大量信息的PDF文件。在这种情况下&#xff0c;拆分这些文件成为一种理想的解决方案&#xff0c;以便更精准地管理和阅读这些信息。接下来&#xff0c;我们将深入探讨几种实用的PDF拆分技巧。 一、直观的…

postman-循环调用测试接口

此篇文章产生的背景是想针对接口做流控验证&#xff0c;检查流控是否奏效&#xff0c;便发现postman也能一次操作来循环调用接口&#xff0c;减少了一些开发测试工作&#xff0c;下面就看一下操作流程 目录 前置查看postman版本我的接口数据 具体操作步骤新建接口集选择接口集进…

FL Studio Producer Edition v21.0.3.3517 for Mac中文版解锁版下载

水果音乐编辑软件FL Studio Producer Edition v21.0.3.3517 for Mac中文版解锁版下载是兔八哥爱分享搜集到的Mac Os系统上一款功能齐全的音乐编曲工具&#xff0c;可以为需要创作高品质音乐曲目的专业和业余艺术家提供多轨录音&#xff0c;排序和混音。 借助FL Studio 21的帮助…

运动模糊还原|维纳滤波|图像处理

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 这两个都是博主在学习Linux操作系统过程中的记录&#xff0c;希望对大家的学习有帮助&#xff01; 操作系统Operating Syshttps://blog.csdn.net/yu_cblog/category_12165502.html?spm1001.2014.3001.5482Linux S…

《Ansible故障篇:ansible报错解决python依赖》

一、背景信息 如下报错&#xff1a;这个警告是提醒您当前的Ansible配置在目标主机上使用的是/usr/bin/python而不是建议的/usr/bin/python3&#xff0c;因为Ansible 2.9版本之前的某些版本默认使用早期的Python 2.x版本。然而&#xff0c;在将来的版本中&#xff0c;Ansible将会…

xpath下载安装——Python爬虫xpath插件下载安装(2023.7亲测可用!!)

目录 1.免费下载插件链接&#xff08;若失效评论区留言发送最新链接&#xff09;&#xff08;2023.7亲测可用&#xff09; 2.安装插件 &#xff08;1&#xff09;打开chrome浏览器页面&#xff0c;点击&#xff1a;右上角三个点 > 扩展程序 > 管理拓展程序 &#xff…

leedcode 1326. 灌溉花园的最少水龙头数目

在 x 轴上有一个一维的花园。花园长度为 n&#xff0c;从点 0 开始&#xff0c;到点 n 结束。 花园里总共有 n 1 个水龙头&#xff0c;分别位于 [0, 1, …, n] 。 给你一个整数 n 和一个长度为 n 1 的整数数组 ranges &#xff0c;其中 ranges[i] &#xff08;下标从 0 开始…

wsl2中安装docker

1、安装docker 执行以下脚本&#xff1a; 这个脚本在执行之前需要先执行chmod x install-docker.sh这个命令 # install docker curl -fsSL get.docker.com -o get-docker.sh sh get-docker.shif [ ! $(getent group docker) ]; thensudo groupadd docker; elseecho "doc…

暗图增强 小期刊/会议 论文阅读笔记

Y. Ueda, H. Misawa, T. Koga, N. Suetake and E. Uchino, “HUE-Preserving Color Contrast Enhancement Method Without Gamut Problem by Using Histogram Specification,” 2018 25th IEEE International Conference on Image Processing (ICIP), Athens, Greece, 2018, pp…